/*++ Copyright (c) 1989 Microsoft Corporation Module Name: RxData.h Abstract: This module declares the global data used by the RDBSS file system. Author: Revision History: --*/ #ifndef _RDBSSDATA_ #define _RDBSSDATA_ // #ifndef MONOLITHIC_MINIRDR extern PIO_WORKITEM RxIoWorkItem; #endif extern RX_DISPATCHER RxDispatcher; extern RX_WORK_QUEUE_DISPATCHER RxDispatcherWorkQueues; //this constants are the same as the versions in ntexapi.h // but drivers are not supposed to import that! #define RX_PROCESSOR_ARCHITECTURE_INTEL 0 #define RX_PROCESSOR_ARCHITECTURE_MIPS 1 #define RX_PROCESSOR_ARCHITECTURE_ALPHA 2 #define RX_PROCESSOR_ARCHITECTURE_PPC 3 #define RX_PROCESSOR_ARCHITECTURE_UNKNOWN 0xffff // RX_CONTEXT serialization extern KMUTEX RxSerializationMutex; #define RxAcquireSerializationMutex() \ KeWaitForSingleObject(&RxSerializationMutex,Executive,KernelMode,FALSE,NULL) #define RxReleaseSerializationMutex() \ KeReleaseMutex(&RxSerializationMutex,FALSE) // // The global fsd data record, and global large integer constants // extern ULONG RxElapsedSecondsSinceStart; extern NTSTATUS RxStubStatus; extern PRDBSS_DEVICE_OBJECT RxFileSystemDeviceObject; extern LARGE_INTEGER RxLargeZero; extern LARGE_INTEGER RxMaxLarge; extern LARGE_INTEGER Rx30Milliseconds; extern LARGE_INTEGER RxOneSecond; extern LARGE_INTEGER RxOneDay; extern LARGE_INTEGER RxJanOne1980; extern LARGE_INTEGER RxDecThirtyOne1979; // // The status actually returned by the FsdDispatchStub.....usually not implemented // extern NTSTATUS RxStubStatus; // // The FCB for opens that refer to the device object directly or // for file objects that reference nonFcbs (like treecons) // extern FCB RxDeviceFCB; #if 0 // // Define maximum number of parallel Reads or Writes that will be generated // per one request. // #define RDBSS_MAX_IO_RUNS_ON_STACK ((ULONG) 5) // // Define the maximum number of delayed closes. // #define RDBSS_MAX_DELAYED_CLOSES ((ULONG)16) extern ULONG RxMaxDelayedCloseCount; #endif //0 #if DBG // // The following variables are used to keep track of the total amount // of requests processed by the file system, and the number of requests // that end up being processed by the Fsp thread. The first variable // is incremented whenever an Irp context is created (which is always // at the start of an Fsd entry point) and the second is incremented // by read request. // extern ULONG RxFsdEntryCount; //extern ULONG RxFspEntryCount; //extern ULONG RxIoCallDriverCount; //extern ULONG RxTotalTicks[]; extern ULONG RxIrpCodeCount[]; #endif // The list of active RxContexts being processed by the RDBSS extern LIST_ENTRY RxSrvCalldownList; extern LIST_ENTRY RxActiveContexts; __volatile extern LONG RxNumberOfActiveFcbs; extern UNICODE_STRING s_PipeShareName; extern UNICODE_STRING s_MailSlotShareName; extern UNICODE_STRING s_MailSlotServerPrefix; extern UNICODE_STRING s_IpcShareName; extern UNICODE_STRING s_PrimaryDomainName; // // To allow NFS to run RDBSS on W2K, we now look up the kenel routine // FsRtlTeardownPerStreamContexts dynamically at run time. // This is the global variable that contains the function pointer or NULL // if the routine could not be found (as on W2K. // extern VOID (*RxTeardownPerStreamContexts)(IN PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader); #endif // _RDBSSDATA_