[RDBSS]
[RXCE]
[DDK]
Add an initial implementation of the RXCE and RDBSS libraries that are used to implement mini-redirectors
The associated headers are also added to DDK
The implementation is partial (really!) and is only working for read-only operations.
It leaks memory as hell (no refcounting implemented) and thus, objects freeing is not implemented.
It was tested with NFS41 driver. With such RDBSS, it's possible for the driver to mount a remote share, to list
files, to query their properties, to query volume properties, and finally to read files (with some corruption under
specific conditions).
Please refrain from committing in this (especially for modifying whitespaces or fixing comments...), this is still WIP
and under development, it would mess with my local changes!
In itself, it doesn't bring anything to ReactOS yet, as no mini redirector is available in ReactOS source tree.
This may come later on with NFS41.
More to follow...
CORE-11327
svn path=/trunk/; revision=74674
2017-05-26 20:52:18 +00:00
|
|
|
#ifndef _RXMINIRDR_
|
|
|
|
#define _RXMINIRDR_
|
|
|
|
|
2017-07-15 10:05:32 +00:00
|
|
|
#define RxSetIoStatusStatus(R, S) (R)->CurrentIrp->IoStatus.Status = (S)
|
|
|
|
#define RxSetIoStatusInfo(R, I) (R)->CurrentIrp->IoStatus.Information = (I)
|
|
|
|
|
2017-07-08 17:12:33 +00:00
|
|
|
#define RxShouldPostCompletion() ((KeGetCurrentIrql() >= DISPATCH_LEVEL))
|
|
|
|
|
[RDBSS]
[RXCE]
[DDK]
Add an initial implementation of the RXCE and RDBSS libraries that are used to implement mini-redirectors
The associated headers are also added to DDK
The implementation is partial (really!) and is only working for read-only operations.
It leaks memory as hell (no refcounting implemented) and thus, objects freeing is not implemented.
It was tested with NFS41 driver. With such RDBSS, it's possible for the driver to mount a remote share, to list
files, to query their properties, to query volume properties, and finally to read files (with some corruption under
specific conditions).
Please refrain from committing in this (especially for modifying whitespaces or fixing comments...), this is still WIP
and under development, it would mess with my local changes!
In itself, it doesn't bring anything to ReactOS yet, as no mini redirector is available in ReactOS source tree.
This may come later on with NFS41.
More to follow...
CORE-11327
svn path=/trunk/; revision=74674
2017-05-26 20:52:18 +00:00
|
|
|
#define RX_REGISTERMINI_FLAG_DONT_PROVIDE_UNCS 0x00000001
|
|
|
|
#define RX_REGISTERMINI_FLAG_DONT_PROVIDE_MAILSLOTS 0x00000002
|
|
|
|
#define RX_REGISTERMINI_FLAG_DONT_INIT_DRIVER_DISPATCH 0x00000004
|
|
|
|
#define RX_REGISTERMINI_FLAG_DONT_INIT_PREFIX_N_SCAVENGER 0x00000008
|
|
|
|
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
RxRegisterMinirdr(
|
|
|
|
_Out_ PRDBSS_DEVICE_OBJECT *DeviceObject,
|
|
|
|
_Inout_ PDRIVER_OBJECT DriverObject,
|
|
|
|
_In_ PMINIRDR_DISPATCH MrdrDispatch,
|
|
|
|
_In_ ULONG Controls,
|
|
|
|
_In_ PUNICODE_STRING DeviceName,
|
|
|
|
_In_ ULONG DeviceExtensionSize,
|
|
|
|
_In_ DEVICE_TYPE DeviceType,
|
|
|
|
_In_ ULONG DeviceCharacteristics);
|
|
|
|
|
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
RxpUnregisterMinirdr(
|
|
|
|
_In_ PRDBSS_DEVICE_OBJECT RxDeviceObject);
|
|
|
|
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
RxStartMinirdr(
|
|
|
|
_In_ PRX_CONTEXT RxContext,
|
|
|
|
_Out_ PBOOLEAN PostToFsp);
|
|
|
|
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
RxStopMinirdr(
|
|
|
|
_In_ PRX_CONTEXT RxContext,
|
|
|
|
_Out_ PBOOLEAN PostToFsp);
|
|
|
|
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
RxFsdDispatch(
|
|
|
|
_In_ PRDBSS_DEVICE_OBJECT RxDeviceObject,
|
|
|
|
_In_ PIRP Irp);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
NTSTATUS
|
|
|
|
(NTAPI *PMRX_CALLDOWN) (
|
|
|
|
_Inout_ PRX_CONTEXT RxContext);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
NTSTATUS
|
|
|
|
(NTAPI *PMRX_CALLDOWN_CTX) (
|
|
|
|
_Inout_ PRX_CONTEXT RxContext,
|
|
|
|
_Inout_ PRDBSS_DEVICE_OBJECT RxDeviceObject);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
NTSTATUS
|
|
|
|
(NTAPI *PMRX_CHKDIR_CALLDOWN) (
|
|
|
|
_Inout_ PRX_CONTEXT RxContext,
|
|
|
|
_In_ PUNICODE_STRING DirectoryName);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
NTSTATUS
|
|
|
|
(NTAPI *PMRX_CHKFCB_CALLDOWN) (
|
|
|
|
_In_ PFCB Fcb1,
|
|
|
|
_In_ PFCB Fcb2);
|
|
|
|
|
|
|
|
typedef enum _RX_BLOCK_CONDITION {
|
|
|
|
Condition_Uninitialized = 0,
|
|
|
|
Condition_InTransition,
|
|
|
|
Condition_Closing,
|
|
|
|
Condition_Good,
|
|
|
|
Condition_Bad,
|
|
|
|
Condition_Closed
|
|
|
|
} RX_BLOCK_CONDITION, *PRX_BLOCK_CONDITION;
|
|
|
|
|
|
|
|
#define StableCondition(X) ((X) >= Condition_Good)
|
|
|
|
|
|
|
|
typedef
|
|
|
|
VOID
|
|
|
|
(NTAPI *PMRX_NETROOT_CALLBACK) (
|
|
|
|
_Inout_ PMRX_CREATENETROOT_CONTEXT CreateContext);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
VOID
|
|
|
|
(NTAPI *PMRX_EXTRACT_NETROOT_NAME) (
|
|
|
|
_In_ PUNICODE_STRING FilePathName,
|
|
|
|
_In_ PMRX_SRV_CALL SrvCall,
|
|
|
|
_Out_ PUNICODE_STRING NetRootName,
|
|
|
|
_Out_opt_ PUNICODE_STRING RestOfName);
|
|
|
|
|
|
|
|
typedef struct _MRX_CREATENETROOT_CONTEXT
|
|
|
|
{
|
|
|
|
PRX_CONTEXT RxContext;
|
|
|
|
PV_NET_ROOT pVNetRoot;
|
|
|
|
KEVENT FinishEvent;
|
|
|
|
NTSTATUS VirtualNetRootStatus;
|
|
|
|
NTSTATUS NetRootStatus;
|
|
|
|
RX_WORK_QUEUE_ITEM WorkQueueItem;
|
|
|
|
PMRX_NETROOT_CALLBACK Callback;
|
|
|
|
} MRX_CREATENETROOT_CONTEXT, *PMRX_CREATENETROOT_CONTEXT;
|
|
|
|
|
|
|
|
typedef
|
|
|
|
NTSTATUS
|
|
|
|
(NTAPI *PMRX_CREATE_V_NET_ROOT) (
|
|
|
|
_Inout_ PMRX_CREATENETROOT_CONTEXT Context);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
NTSTATUS
|
|
|
|
(NTAPI *PMRX_UPDATE_NETROOT_STATE) (
|
|
|
|
_Inout_ PMRX_NET_ROOT NetRoot);
|
|
|
|
|
|
|
|
typedef struct _MRX_SRVCALL_CALLBACK_CONTEXT
|
|
|
|
{
|
|
|
|
PMRX_SRVCALLDOWN_STRUCTURE SrvCalldownStructure;
|
|
|
|
ULONG CallbackContextOrdinal;
|
|
|
|
PRDBSS_DEVICE_OBJECT RxDeviceObject;
|
|
|
|
NTSTATUS Status;
|
|
|
|
PVOID RecommunicateContext;
|
|
|
|
} MRX_SRVCALL_CALLBACK_CONTEXT, *PMRX_SRVCALL_CALLBACK_CONTEXT;
|
|
|
|
|
|
|
|
typedef
|
|
|
|
VOID
|
|
|
|
(NTAPI *PMRX_SRVCALL_CALLBACK) (
|
|
|
|
_Inout_ PMRX_SRVCALL_CALLBACK_CONTEXT Context);
|
|
|
|
|
|
|
|
typedef struct _MRX_SRVCALLDOWN_STRUCTURE
|
|
|
|
{
|
|
|
|
KEVENT FinishEvent;
|
|
|
|
LIST_ENTRY SrvCalldownList;
|
|
|
|
PRX_CONTEXT RxContext;
|
|
|
|
PMRX_SRV_CALL SrvCall;
|
|
|
|
PMRX_SRVCALL_CALLBACK CallBack;
|
|
|
|
BOOLEAN CalldownCancelled;
|
|
|
|
ULONG NumberRemaining;
|
|
|
|
ULONG NumberToWait;
|
|
|
|
ULONG BestFinisherOrdinal;
|
|
|
|
PRDBSS_DEVICE_OBJECT BestFinisher;
|
|
|
|
MRX_SRVCALL_CALLBACK_CONTEXT CallbackContexts[1];
|
|
|
|
} MRX_SRVCALLDOWN_STRUCTURE, *PMRX_SRVCALLDOWN_STRUCTURE;
|
|
|
|
|
|
|
|
typedef
|
|
|
|
NTSTATUS
|
|
|
|
(NTAPI *PMRX_CREATE_SRVCALL) (
|
|
|
|
_Inout_ PMRX_SRV_CALL SrvCall,
|
|
|
|
_Inout_ PMRX_SRVCALL_CALLBACK_CONTEXT SrvCallCallBackContext);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
NTSTATUS
|
|
|
|
(NTAPI *PMRX_SRVCALL_WINNER_NOTIFY)(
|
|
|
|
_Inout_ PMRX_SRV_CALL SrvCall,
|
|
|
|
_In_ BOOLEAN ThisMinirdrIsTheWinner,
|
|
|
|
_Inout_ PVOID RecommunicateContext);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
NTSTATUS
|
|
|
|
(NTAPI *PMRX_DEALLOCATE_FOR_FCB) (
|
|
|
|
_Inout_ PMRX_FCB Fcb);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
NTSTATUS
|
|
|
|
(NTAPI *PMRX_DEALLOCATE_FOR_FOBX) (
|
|
|
|
_Inout_ PMRX_FOBX Fobx);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
NTSTATUS
|
|
|
|
(NTAPI *PMRX_IS_LOCK_REALIZABLE) (
|
|
|
|
_Inout_ PMRX_FCB Fcb,
|
|
|
|
_In_ PLARGE_INTEGER ByteOffset,
|
|
|
|
_In_ PLARGE_INTEGER Length,
|
|
|
|
_In_ ULONG LowIoLockFlags);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
NTSTATUS
|
|
|
|
(NTAPI *PMRX_FORCECLOSED_CALLDOWN) (
|
|
|
|
_Inout_ PMRX_SRV_OPEN SrvOpen);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
NTSTATUS
|
|
|
|
(NTAPI *PMRX_FINALIZE_SRVCALL_CALLDOWN) (
|
|
|
|
_Inout_ PMRX_SRV_CALL SrvCall,
|
|
|
|
_In_ BOOLEAN Force);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
NTSTATUS
|
|
|
|
(NTAPI *PMRX_FINALIZE_V_NET_ROOT_CALLDOWN) (
|
|
|
|
_Inout_ PMRX_V_NET_ROOT VirtualNetRoot,
|
|
|
|
_In_ PBOOLEAN Force);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
NTSTATUS
|
|
|
|
(NTAPI *PMRX_FINALIZE_NET_ROOT_CALLDOWN) (
|
|
|
|
_Inout_ PMRX_NET_ROOT NetRoot,
|
|
|
|
_In_ PBOOLEAN Force);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
ULONG
|
|
|
|
(NTAPI *PMRX_EXTENDFILE_CALLDOWN) (
|
|
|
|
_Inout_ PRX_CONTEXT RxContext,
|
|
|
|
_Inout_ PLARGE_INTEGER NewFileSize,
|
|
|
|
_Out_ PLARGE_INTEGER NewAllocationSize);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
NTSTATUS
|
|
|
|
(NTAPI *PMRX_CHANGE_BUFFERING_STATE_CALLDOWN) (
|
|
|
|
_Inout_ PRX_CONTEXT RxContext,
|
|
|
|
_Inout_ PMRX_SRV_OPEN SrvOpen,
|
|
|
|
_In_ PVOID MRxContext);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
NTSTATUS
|
|
|
|
(NTAPI *PMRX_PREPARSE_NAME) (
|
|
|
|
_Inout_ PRX_CONTEXT RxContext,
|
|
|
|
_In_ PUNICODE_STRING Name);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
NTSTATUS
|
|
|
|
(NTAPI *PMRX_GET_CONNECTION_ID) (
|
|
|
|
_Inout_ PRX_CONTEXT RxContext,
|
|
|
|
_Inout_ PRX_CONNECTION_ID UniqueId);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
NTSTATUS
|
|
|
|
(NTAPI *PMRX_COMPUTE_NEW_BUFFERING_STATE) (
|
|
|
|
_Inout_ PMRX_SRV_OPEN SrvOpen,
|
|
|
|
_In_ PVOID MRxContext,
|
|
|
|
_Out_ PULONG NewBufferingState);
|
|
|
|
|
|
|
|
typedef enum _LOWIO_OPS {
|
|
|
|
LOWIO_OP_READ = 0,
|
|
|
|
LOWIO_OP_WRITE,
|
|
|
|
LOWIO_OP_SHAREDLOCK,
|
|
|
|
LOWIO_OP_EXCLUSIVELOCK,
|
|
|
|
LOWIO_OP_UNLOCK,
|
|
|
|
LOWIO_OP_UNLOCK_MULTIPLE,
|
|
|
|
LOWIO_OP_FSCTL,
|
|
|
|
LOWIO_OP_IOCTL,
|
|
|
|
LOWIO_OP_NOTIFY_CHANGE_DIRECTORY,
|
|
|
|
LOWIO_OP_CLEAROUT,
|
|
|
|
LOWIO_OP_MAXIMUM
|
|
|
|
} LOWIO_OPS;
|
|
|
|
|
|
|
|
typedef
|
|
|
|
NTSTATUS
|
|
|
|
(NTAPI *PLOWIO_COMPLETION_ROUTINE) (
|
|
|
|
_In_ PRX_CONTEXT RxContext);
|
|
|
|
|
|
|
|
typedef LONGLONG RXVBO;
|
|
|
|
|
|
|
|
typedef struct _LOWIO_LOCK_LIST
|
|
|
|
{
|
|
|
|
struct _LOWIO_LOCK_LIST * Next;
|
|
|
|
ULONG LockNumber;
|
|
|
|
RXVBO ByteOffset;
|
|
|
|
LONGLONG Length;
|
|
|
|
BOOLEAN ExclusiveLock;
|
|
|
|
ULONG Key;
|
|
|
|
} LOWIO_LOCK_LIST, *PLOWIO_LOCK_LIST;
|
|
|
|
|
|
|
|
typedef struct _XXCTL_LOWIO_COMPONENT
|
|
|
|
{
|
|
|
|
ULONG Flags;
|
|
|
|
union
|
|
|
|
{
|
|
|
|
ULONG FsControlCode;
|
|
|
|
ULONG IoControlCode;
|
|
|
|
};
|
|
|
|
ULONG InputBufferLength;
|
|
|
|
PVOID pInputBuffer;
|
|
|
|
ULONG OutputBufferLength;
|
|
|
|
PVOID pOutputBuffer;
|
|
|
|
UCHAR MinorFunction;
|
|
|
|
} XXCTL_LOWIO_COMPONENT;
|
|
|
|
|
|
|
|
typedef struct _LOWIO_CONTEXT
|
|
|
|
{
|
|
|
|
USHORT Operation;
|
|
|
|
USHORT Flags;
|
|
|
|
PLOWIO_COMPLETION_ROUTINE CompletionRoutine;
|
|
|
|
PERESOURCE Resource;
|
|
|
|
ERESOURCE_THREAD ResourceThreadId;
|
|
|
|
union
|
|
|
|
{
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
ULONG Flags;
|
|
|
|
PMDL Buffer;
|
|
|
|
RXVBO ByteOffset;
|
|
|
|
ULONG ByteCount;
|
|
|
|
ULONG Key;
|
|
|
|
PNON_PAGED_FCB NonPagedFcb;
|
|
|
|
} ReadWrite;
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
union
|
|
|
|
{
|
|
|
|
PLOWIO_LOCK_LIST LockList;
|
|
|
|
LONGLONG Length;
|
|
|
|
};
|
|
|
|
ULONG Flags;
|
|
|
|
RXVBO ByteOffset;
|
|
|
|
ULONG Key;
|
|
|
|
} Locks;
|
|
|
|
XXCTL_LOWIO_COMPONENT FsCtl;
|
|
|
|
XXCTL_LOWIO_COMPONENT IoCtl;
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
BOOLEAN WatchTree;
|
|
|
|
ULONG CompletionFilter;
|
|
|
|
ULONG NotificationBufferLength;
|
|
|
|
PVOID pNotificationBuffer;
|
|
|
|
} NotifyChangeDirectory;
|
|
|
|
} ParamsFor;
|
|
|
|
} LOWIO_CONTEXT;
|
|
|
|
|
|
|
|
#define LOWIO_CONTEXT_FLAG_SYNCCALL 0x01
|
2017-07-08 17:12:33 +00:00
|
|
|
#define LOWIO_CONTEXT_FLAG_SAVEUNLOCKS 0x2
|
[RDBSS]
[RXCE]
[DDK]
Add an initial implementation of the RXCE and RDBSS libraries that are used to implement mini-redirectors
The associated headers are also added to DDK
The implementation is partial (really!) and is only working for read-only operations.
It leaks memory as hell (no refcounting implemented) and thus, objects freeing is not implemented.
It was tested with NFS41 driver. With such RDBSS, it's possible for the driver to mount a remote share, to list
files, to query their properties, to query volume properties, and finally to read files (with some corruption under
specific conditions).
Please refrain from committing in this (especially for modifying whitespaces or fixing comments...), this is still WIP
and under development, it would mess with my local changes!
In itself, it doesn't bring anything to ReactOS yet, as no mini redirector is available in ReactOS source tree.
This may come later on with NFS41.
More to follow...
CORE-11327
svn path=/trunk/; revision=74674
2017-05-26 20:52:18 +00:00
|
|
|
#define LOWIO_CONTEXT_FLAG_LOUDOPS 0x04
|
|
|
|
#define LOWIO_CONTEXT_FLAG_CAN_COMPLETE_AT_DPC_LEVEL 0x08
|
|
|
|
|
|
|
|
#define LOWIO_READWRITEFLAG_PAGING_IO 0x01
|
[RDBSS]
- Implement __RxWriteReleaseResources(), RxCommonWrite(), RxCompleteMdl(), RxGetTopIrpIfRdbssIrp(), RxLowIoWriteShell(), RxLowIoWriteShellCompletion()
- Finish implementation of RxCommonCleanup() so that it handles setting EOF on a file
- Finish implementation of RxCommonCreate() so that it handles sharing violations and attempts to scavenge open files
[RXCE]
- Implement RxpScavengeFobxs(), RxpTrackDereference(), RxpTrackReference(), RxPurgeFobx(), RxPurgeRelatedFobxs(), RxReinitializeContext(), RxSetFileSizeWithLock(), RxScavengeFobxsForNetRoot()
- Fix a bug in RxPrefixTableLookupName() where it was badly handling nodes in scavenger
This commits brings several improvments to the NFS driver.
First of all, now, the driver handles creating, extending and writing to files!
It also handles purging dormant opened files when a file opening fails because of a sharing violation
Finally, it also brings something to look at our references issues in RDBSS to help finding out why our FCB are never (or nearly) dereferenced
CORE-8204
CORE-11327
CORE-13581
svn path=/trunk/; revision=75398
2017-07-24 17:05:05 +00:00
|
|
|
#define LOWIO_READWRITEFLAG_EXTENDING_FILESIZE 0x02
|
|
|
|
#define LOWIO_READWRITEFLAG_EXTENDING_VDL 0x04
|
[RDBSS]
[RXCE]
[DDK]
Add an initial implementation of the RXCE and RDBSS libraries that are used to implement mini-redirectors
The associated headers are also added to DDK
The implementation is partial (really!) and is only working for read-only operations.
It leaks memory as hell (no refcounting implemented) and thus, objects freeing is not implemented.
It was tested with NFS41 driver. With such RDBSS, it's possible for the driver to mount a remote share, to list
files, to query their properties, to query volume properties, and finally to read files (with some corruption under
specific conditions).
Please refrain from committing in this (especially for modifying whitespaces or fixing comments...), this is still WIP
and under development, it would mess with my local changes!
In itself, it doesn't bring anything to ReactOS yet, as no mini redirector is available in ReactOS source tree.
This may come later on with NFS41.
More to follow...
CORE-11327
svn path=/trunk/; revision=74674
2017-05-26 20:52:18 +00:00
|
|
|
|
|
|
|
#define RDBSS_MANAGE_SRV_CALL_EXTENSION 0x01
|
|
|
|
#define RDBSS_MANAGE_NET_ROOT_EXTENSION 0x02
|
|
|
|
#define RDBSS_MANAGE_V_NET_ROOT_EXTENSION 0x04
|
|
|
|
#define RDBSS_MANAGE_FCB_EXTENSION 0x08
|
|
|
|
#define RDBSS_MANAGE_SRV_OPEN_EXTENSION 0x10
|
|
|
|
#define RDBSS_MANAGE_FOBX_EXTENSION 0x20
|
|
|
|
#define RDBSS_NO_DEFERRED_CACHE_READAHEAD 0x1000
|
|
|
|
|
|
|
|
typedef struct _MINIRDR_DISPATCH
|
|
|
|
{
|
|
|
|
NODE_TYPE_CODE NodeTypeCode;
|
|
|
|
NODE_BYTE_SIZE NodeByteSize;
|
|
|
|
ULONG MRxFlags;
|
|
|
|
ULONG MRxSrvCallSize;
|
|
|
|
ULONG MRxNetRootSize;
|
|
|
|
ULONG MRxVNetRootSize;
|
|
|
|
ULONG MRxFcbSize;
|
|
|
|
ULONG MRxSrvOpenSize;
|
|
|
|
ULONG MRxFobxSize;
|
|
|
|
PMRX_CALLDOWN_CTX MRxStart;
|
|
|
|
PMRX_CALLDOWN_CTX MRxStop;
|
|
|
|
PMRX_CALLDOWN MRxCancel;
|
|
|
|
PMRX_CALLDOWN MRxCreate;
|
|
|
|
PMRX_CALLDOWN MRxCollapseOpen;
|
|
|
|
PMRX_CALLDOWN MRxShouldTryToCollapseThisOpen;
|
|
|
|
PMRX_CALLDOWN MRxFlush;
|
|
|
|
PMRX_CALLDOWN MRxZeroExtend;
|
|
|
|
PMRX_CALLDOWN MRxTruncate;
|
|
|
|
PMRX_CALLDOWN MRxCleanupFobx;
|
|
|
|
PMRX_CALLDOWN MRxCloseSrvOpen;
|
|
|
|
PMRX_DEALLOCATE_FOR_FCB MRxDeallocateForFcb;
|
|
|
|
PMRX_DEALLOCATE_FOR_FOBX MRxDeallocateForFobx;
|
|
|
|
PMRX_IS_LOCK_REALIZABLE MRxIsLockRealizable;
|
|
|
|
PMRX_FORCECLOSED_CALLDOWN MRxForceClosed;
|
|
|
|
PMRX_CHKFCB_CALLDOWN MRxAreFilesAliased;
|
|
|
|
PMRX_CALLDOWN MRxOpenPrintFile;
|
|
|
|
PMRX_CALLDOWN MRxClosePrintFile;
|
|
|
|
PMRX_CALLDOWN MRxWritePrintFile;
|
|
|
|
PMRX_CALLDOWN MRxEnumeratePrintQueue;
|
|
|
|
PMRX_CALLDOWN MRxClosedSrvOpenTimeOut;
|
|
|
|
PMRX_CALLDOWN MRxClosedFcbTimeOut;
|
|
|
|
PMRX_CALLDOWN MRxQueryDirectory;
|
|
|
|
PMRX_CALLDOWN MRxQueryFileInfo;
|
|
|
|
PMRX_CALLDOWN MRxSetFileInfo;
|
|
|
|
PMRX_CALLDOWN MRxSetFileInfoAtCleanup;
|
|
|
|
PMRX_CALLDOWN MRxQueryEaInfo;
|
|
|
|
PMRX_CALLDOWN MRxSetEaInfo;
|
|
|
|
PMRX_CALLDOWN MRxQuerySdInfo;
|
|
|
|
PMRX_CALLDOWN MRxSetSdInfo;
|
|
|
|
PMRX_CALLDOWN MRxQueryQuotaInfo;
|
|
|
|
PMRX_CALLDOWN MRxSetQuotaInfo;
|
|
|
|
PMRX_CALLDOWN MRxQueryVolumeInfo;
|
|
|
|
PMRX_CALLDOWN MRxSetVolumeInfo;
|
|
|
|
PMRX_CHKDIR_CALLDOWN MRxIsValidDirectory;
|
|
|
|
PMRX_COMPUTE_NEW_BUFFERING_STATE MRxComputeNewBufferingState;
|
|
|
|
PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_MAXIMUM+1];
|
|
|
|
PMRX_EXTENDFILE_CALLDOWN MRxExtendForCache;
|
|
|
|
PMRX_EXTENDFILE_CALLDOWN MRxExtendForNonCache;
|
|
|
|
PMRX_CHANGE_BUFFERING_STATE_CALLDOWN MRxCompleteBufferingStateChangeRequest;
|
|
|
|
PMRX_CREATE_V_NET_ROOT MRxCreateVNetRoot;
|
|
|
|
PMRX_FINALIZE_V_NET_ROOT_CALLDOWN MRxFinalizeVNetRoot;
|
|
|
|
PMRX_FINALIZE_NET_ROOT_CALLDOWN MRxFinalizeNetRoot;
|
|
|
|
PMRX_UPDATE_NETROOT_STATE MRxUpdateNetRootState;
|
|
|
|
PMRX_EXTRACT_NETROOT_NAME MRxExtractNetRootName;
|
|
|
|
PMRX_CREATE_SRVCALL MRxCreateSrvCall;
|
|
|
|
PMRX_CREATE_SRVCALL MRxCancelCreateSrvCall;
|
|
|
|
PMRX_SRVCALL_WINNER_NOTIFY MRxSrvCallWinnerNotify;
|
|
|
|
PMRX_FINALIZE_SRVCALL_CALLDOWN MRxFinalizeSrvCall;
|
|
|
|
PMRX_CALLDOWN MRxDevFcbXXXControlFile;
|
|
|
|
PMRX_PREPARSE_NAME MRxPreparseName;
|
|
|
|
PMRX_GET_CONNECTION_ID MRxGetConnectionId;
|
|
|
|
ULONG ScavengerTimeout;
|
|
|
|
} MINIRDR_DISPATCH, *PMINIRDR_DISPATCH;
|
|
|
|
|
|
|
|
#endif
|