You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
3.6 KiB
146 lines
3.6 KiB
/*++
|
|
|
|
Copyright (c) 1989 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
RxData.h
|
|
|
|
Abstract:
|
|
|
|
This module declares the global data used by the RDBSS file system.
|
|
|
|
Author:
|
|
|
|
Joe Linn [JoeLinn] 1-aug-1994
|
|
|
|
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;
|
|
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_
|
|
|