4#define RxSetIoStatusStatus(R, S) (R)->CurrentIrp->IoStatus.Status = (S)
5#define RxSetIoStatusInfo(R, I) (R)->CurrentIrp->IoStatus.Information = (I)
7#define RxShouldPostCompletion() ((KeGetCurrentIrql() >= DISPATCH_LEVEL))
9#define RX_REGISTERMINI_FLAG_DONT_PROVIDE_UNCS 0x00000001
10#define RX_REGISTERMINI_FLAG_DONT_PROVIDE_MAILSLOTS 0x00000002
11#define RX_REGISTERMINI_FLAG_DONT_INIT_DRIVER_DISPATCH 0x00000004
12#define RX_REGISTERMINI_FLAG_DONT_INIT_PREFIX_N_SCAVENGER 0x00000008
81#define StableCondition(X) ((X) >= Condition_Good)
320#define LOWIO_CONTEXT_FLAG_SYNCCALL 0x01
321#define LOWIO_CONTEXT_FLAG_SAVEUNLOCKS 0x2
322#define LOWIO_CONTEXT_FLAG_LOUDOPS 0x04
323#define LOWIO_CONTEXT_FLAG_CAN_COMPLETE_AT_DPC_LEVEL 0x08
325#define LOWIO_READWRITEFLAG_PAGING_IO 0x01
326#define LOWIO_READWRITEFLAG_EXTENDING_FILESIZE 0x02
327#define LOWIO_READWRITEFLAG_EXTENDING_VDL 0x04
329#define RDBSS_MANAGE_SRV_CALL_EXTENSION 0x01
330#define RDBSS_MANAGE_NET_ROOT_EXTENSION 0x02
331#define RDBSS_MANAGE_V_NET_ROOT_EXTENSION 0x04
332#define RDBSS_MANAGE_FCB_EXTENSION 0x08
333#define RDBSS_MANAGE_SRV_OPEN_EXTENSION 0x10
334#define RDBSS_MANAGE_FOBX_EXTENSION 0x20
335#define RDBSS_NO_DEFERRED_CACHE_READAHEAD 0x1000
_Inout_ PVCB _In_ BOOLEAN Force
int CreateContext(PSOCKET_INFORMATION Socket)
IN PDCB IN PCCB IN VBO IN OUT PULONG OUT PDIRENT OUT PBCB OUT PVBO ByteOffset
struct _MINIRDR_DISPATCH MINIRDR_DISPATCH
enum _RX_BLOCK_CONDITION RX_BLOCK_CONDITION
VOID(NTAPI * PMRX_EXTRACT_NETROOT_NAME)(_In_ PUNICODE_STRING FilePathName, _In_ PMRX_SRV_CALL SrvCall, _Out_ PUNICODE_STRING NetRootName, _Out_opt_ PUNICODE_STRING RestOfName)
VOID NTAPI RxpUnregisterMinirdr(_In_ PRDBSS_DEVICE_OBJECT RxDeviceObject)
NTSTATUS NTAPI RxStartMinirdr(_In_ PRX_CONTEXT RxContext, _Out_ PBOOLEAN PostToFsp)
struct _LOWIO_LOCK_LIST LOWIO_LOCK_LIST
@ Condition_Uninitialized
NTSTATUS(NTAPI * PMRX_FORCECLOSED_CALLDOWN)(_Inout_ PMRX_SRV_OPEN SrvOpen)
struct _LOWIO_CONTEXT LOWIO_CONTEXT
NTSTATUS(NTAPI * PLOWIO_COMPLETION_ROUTINE)(_In_ PRX_CONTEXT RxContext)
NTSTATUS(NTAPI * PMRX_CREATE_V_NET_ROOT)(_Inout_ PMRX_CREATENETROOT_CONTEXT Context)
struct _LOWIO_LOCK_LIST * PLOWIO_LOCK_LIST
NTSTATUS(NTAPI * PMRX_FINALIZE_SRVCALL_CALLDOWN)(_Inout_ PMRX_SRV_CALL SrvCall, _In_ BOOLEAN Force)
VOID(NTAPI * PMRX_SRVCALL_CALLBACK)(_Inout_ PMRX_SRVCALL_CALLBACK_CONTEXT Context)
NTSTATUS(NTAPI * PMRX_CHANGE_BUFFERING_STATE_CALLDOWN)(_Inout_ PRX_CONTEXT RxContext, _Inout_ PMRX_SRV_OPEN SrvOpen, _In_ PVOID MRxContext)
enum _RX_BLOCK_CONDITION * PRX_BLOCK_CONDITION
NTSTATUS(NTAPI * PMRX_CHKFCB_CALLDOWN)(_In_ PFCB Fcb1, _In_ PFCB Fcb2)
struct _MRX_CREATENETROOT_CONTEXT * PMRX_CREATENETROOT_CONTEXT
struct _MINIRDR_DISPATCH * PMINIRDR_DISPATCH
VOID(NTAPI * PMRX_NETROOT_CALLBACK)(_Inout_ PMRX_CREATENETROOT_CONTEXT CreateContext)
NTSTATUS(NTAPI * PMRX_COMPUTE_NEW_BUFFERING_STATE)(_Inout_ PMRX_SRV_OPEN SrvOpen, _In_ PVOID MRxContext, _Out_ PULONG NewBufferingState)
struct _MRX_SRVCALL_CALLBACK_CONTEXT * PMRX_SRVCALL_CALLBACK_CONTEXT
NTSTATUS(NTAPI * PMRX_IS_LOCK_REALIZABLE)(_Inout_ PMRX_FCB Fcb, _In_ PLARGE_INTEGER ByteOffset, _In_ PLARGE_INTEGER Length, _In_ ULONG LowIoLockFlags)
@ LOWIO_OP_NOTIFY_CHANGE_DIRECTORY
@ LOWIO_OP_UNLOCK_MULTIPLE
NTSTATUS(NTAPI * PMRX_DEALLOCATE_FOR_FOBX)(_Inout_ PMRX_FOBX Fobx)
NTSTATUS(NTAPI * PMRX_CREATE_SRVCALL)(_Inout_ PMRX_SRV_CALL SrvCall, _Inout_ PMRX_SRVCALL_CALLBACK_CONTEXT SrvCallCallBackContext)
NTSTATUS NTAPI RxFsdDispatch(_In_ PRDBSS_DEVICE_OBJECT RxDeviceObject, _In_ PIRP Irp)
struct _MRX_SRVCALLDOWN_STRUCTURE MRX_SRVCALLDOWN_STRUCTURE
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)
enum _LOWIO_OPS LOWIO_OPS
struct _MRX_SRVCALL_CALLBACK_CONTEXT MRX_SRVCALL_CALLBACK_CONTEXT
NTSTATUS(NTAPI * PMRX_CALLDOWN)(_Inout_ PRX_CONTEXT RxContext)
NTSTATUS(NTAPI * PMRX_DEALLOCATE_FOR_FCB)(_Inout_ PMRX_FCB Fcb)
NTSTATUS(NTAPI * PMRX_FINALIZE_NET_ROOT_CALLDOWN)(_Inout_ PMRX_NET_ROOT NetRoot, _In_ PBOOLEAN Force)
NTSTATUS(NTAPI * PMRX_PREPARSE_NAME)(_Inout_ PRX_CONTEXT RxContext, _In_ PUNICODE_STRING Name)
struct _MRX_CREATENETROOT_CONTEXT MRX_CREATENETROOT_CONTEXT
NTSTATUS NTAPI RxStopMinirdr(_In_ PRX_CONTEXT RxContext, _Out_ PBOOLEAN PostToFsp)
ULONG(NTAPI * PMRX_EXTENDFILE_CALLDOWN)(_Inout_ PRX_CONTEXT RxContext, _Inout_ PLARGE_INTEGER NewFileSize, _Out_ PLARGE_INTEGER NewAllocationSize)
NTSTATUS(NTAPI * PMRX_GET_CONNECTION_ID)(_Inout_ PRX_CONTEXT RxContext, _Inout_ PRX_CONNECTION_ID UniqueId)
NTSTATUS(NTAPI * PMRX_CHKDIR_CALLDOWN)(_Inout_ PRX_CONTEXT RxContext, _In_ PUNICODE_STRING DirectoryName)
NTSTATUS(NTAPI * PMRX_FINALIZE_V_NET_ROOT_CALLDOWN)(_Inout_ PMRX_V_NET_ROOT VirtualNetRoot, _In_ PBOOLEAN Force)
struct _XXCTL_LOWIO_COMPONENT XXCTL_LOWIO_COMPONENT
struct _MRX_SRVCALLDOWN_STRUCTURE * PMRX_SRVCALLDOWN_STRUCTURE
NTSTATUS(NTAPI * PMRX_CALLDOWN_CTX)(_Inout_ PRX_CONTEXT RxContext, _Inout_ PRDBSS_DEVICE_OBJECT RxDeviceObject)
NTSTATUS(NTAPI * PMRX_SRVCALL_WINNER_NOTIFY)(_Inout_ PMRX_SRV_CALL SrvCall, _In_ BOOLEAN ThisMinirdrIsTheWinner, _Inout_ PVOID RecommunicateContext)
NTSTATUS(NTAPI * PMRX_UPDATE_NETROOT_STATE)(_Inout_ PMRX_NET_ROOT NetRoot)
_In_ ULONG _In_ ULONG _In_ ULONG Length
PLOWIO_LOCK_LIST LockList
struct _LOWIO_CONTEXT::@2077::@2080 NotifyChangeDirectory
XXCTL_LOWIO_COMPONENT IoCtl
XXCTL_LOWIO_COMPONENT FsCtl
struct _LOWIO_CONTEXT::@2077::@2079 Locks
ULONG NotificationBufferLength
ERESOURCE_THREAD ResourceThreadId
PNON_PAGED_FCB NonPagedFcb
union _LOWIO_CONTEXT::@2077 ParamsFor
PVOID pNotificationBuffer
struct _LOWIO_CONTEXT::@2077::@2078 ReadWrite
PLOWIO_COMPLETION_ROUTINE CompletionRoutine
struct _LOWIO_LOCK_LIST * Next
PMRX_CALLDOWN MRxSetVolumeInfo
PMRX_GET_CONNECTION_ID MRxGetConnectionId
PMRX_CHANGE_BUFFERING_STATE_CALLDOWN MRxCompleteBufferingStateChangeRequest
PMRX_CALLDOWN MRxDevFcbXXXControlFile
PMRX_CALLDOWN MRxClosedFcbTimeOut
PMRX_CALLDOWN MRxEnumeratePrintQueue
PMRX_CALLDOWN MRxQueryQuotaInfo
PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_MAXIMUM+1]
PMRX_EXTENDFILE_CALLDOWN MRxExtendForCache
PMRX_CALLDOWN MRxQueryEaInfo
PMRX_CALLDOWN MRxCleanupFobx
PMRX_EXTRACT_NETROOT_NAME MRxExtractNetRootName
PMRX_CALLDOWN MRxSetFileInfoAtCleanup
PMRX_CREATE_SRVCALL MRxCancelCreateSrvCall
PMRX_CALLDOWN MRxSetQuotaInfo
PMRX_SRVCALL_WINNER_NOTIFY MRxSrvCallWinnerNotify
PMRX_CALLDOWN MRxQueryDirectory
PMRX_CALLDOWN MRxOpenPrintFile
PMRX_CALLDOWN MRxSetSdInfo
PMRX_CALLDOWN MRxCollapseOpen
NODE_TYPE_CODE NodeTypeCode
PMRX_DEALLOCATE_FOR_FOBX MRxDeallocateForFobx
PMRX_CALLDOWN MRxClosePrintFile
PMRX_FORCECLOSED_CALLDOWN MRxForceClosed
PMRX_CALLDOWN MRxQuerySdInfo
PMRX_FINALIZE_SRVCALL_CALLDOWN MRxFinalizeSrvCall
PMRX_CREATE_V_NET_ROOT MRxCreateVNetRoot
PMRX_CALLDOWN MRxZeroExtend
PMRX_IS_LOCK_REALIZABLE MRxIsLockRealizable
PMRX_COMPUTE_NEW_BUFFERING_STATE MRxComputeNewBufferingState
PMRX_PREPARSE_NAME MRxPreparseName
PMRX_FINALIZE_V_NET_ROOT_CALLDOWN MRxFinalizeVNetRoot
PMRX_CHKFCB_CALLDOWN MRxAreFilesAliased
PMRX_CALLDOWN MRxQueryFileInfo
PMRX_CALLDOWN MRxWritePrintFile
PMRX_CREATE_SRVCALL MRxCreateSrvCall
PMRX_FINALIZE_NET_ROOT_CALLDOWN MRxFinalizeNetRoot
PMRX_CALLDOWN_CTX MRxStart
PMRX_UPDATE_NETROOT_STATE MRxUpdateNetRootState
PMRX_CALLDOWN MRxSetFileInfo
PMRX_CALLDOWN MRxQueryVolumeInfo
PMRX_CHKDIR_CALLDOWN MRxIsValidDirectory
PMRX_CALLDOWN MRxShouldTryToCollapseThisOpen
PMRX_CALLDOWN MRxClosedSrvOpenTimeOut
PMRX_EXTENDFILE_CALLDOWN MRxExtendForNonCache
NODE_BYTE_SIZE NodeByteSize
PMRX_CALLDOWN MRxSetEaInfo
PMRX_CALLDOWN_CTX MRxStop
PMRX_DEALLOCATE_FOR_FCB MRxDeallocateForFcb
PMRX_CALLDOWN MRxTruncate
PMRX_CALLDOWN MRxCloseSrvOpen
PMRX_NETROOT_CALLBACK Callback
NTSTATUS VirtualNetRootStatus
RX_WORK_QUEUE_ITEM WorkQueueItem
BOOLEAN CalldownCancelled
PRDBSS_DEVICE_OBJECT BestFinisher
PMRX_SRVCALL_CALLBACK CallBack
ULONG BestFinisherOrdinal
MRX_SRVCALL_CALLBACK_CONTEXT CallbackContexts[1]
LIST_ENTRY SrvCalldownList
PVOID RecommunicateContext
ULONG CallbackContextOrdinal
PRDBSS_DEVICE_OBJECT RxDeviceObject
PMRX_SRVCALLDOWN_STRUCTURE SrvCalldownStructure
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
_In_ WDFDEVICE _In_ ULONG DeviceCharacteristics
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
ULONG_PTR ERESOURCE_THREAD
_In_opt_ PLARGE_INTEGER NewFileSize