89 Vcb->NodeReferences = 1;
108 KeyName.Buffer =
L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\Mup";
109 KeyName.Length =
sizeof(
L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\Mup") -
sizeof(
UNICODE_NULL);
110 KeyName.MaximumLength =
sizeof(
L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\Mup");
129 KeyName.MaximumLength =
sizeof(
L"DisableDfs");
138 return ((
ULONG_PTR)KeyQueryOutput.KeyInfo.Data != 1);
163 Ccb->NodeReferences = 1;
182 Fcb->NodeReferences = 1;
196 if (MasterIoContext ==
NULL)
206 return MasterIoContext;
215 if (UncProvider ==
NULL)
245 Prefix->NodeReferences = 1;
249 if (PrefixLength != 0)
274 if (MasterQueryContext ==
NULL)
287 return MasterQueryContext;
315 ++
Fcb->NodeReferences;
372 if (NewStatus !=
NULL)
390 Irp = MasterIoContext->
Irp;
394 Irp->IoStatus.Information =
Stack->Parameters.Write.Length;
398 Irp->IoStatus.Information = 0;
627 if (LowerIrp ==
NULL)
635 LowerIrp->Tail.Overlay.Thread =
Irp->Tail.Overlay.Thread;
655 if (
Stack->Parameters.Write.Length == 0)
670 Stack->Parameters.Write.Length,
686 LowerIrp->UserBuffer =
Irp->UserBuffer;
691 if (
Stack->Parameters.Write.Length != 0)
740 if (LowerIrp !=
NULL)
794 if (MasterIoContext ==
NULL)
803 MasterIoContext->
Irp =
Irp;
808 MasterIoContext->
Fcb =
Fcb;
813 CcbLockAcquired =
TRUE;
822 CcbLockAcquired =
FALSE;
831 CcbLockAcquired =
TRUE;
835 CcbLockAcquired =
FALSE;
864 ULONG StrLen, NameLen;
868 StrLen = NameLen *
sizeof(
WCHAR);
870 if (UncProvider ==
NULL)
906 NameLen =
wcslen(ProviderName);
907 StrLen = NameLen *
sizeof(
WCHAR) +
sizeof(
L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\") +
sizeof(
L"\\NetworkProvider");
914 RtlMoveMemory(
Key.Buffer,
L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\",
sizeof(
L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\"));
915 Key.MaximumLength = StrLen;
916 Key.Length =
sizeof(
L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\") -
sizeof(
UNICODE_NULL);
974 PWSTR Providers, Coma;
981 RtlInitUnicodeString(&NetworkProvider,
L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\NetworkProvider\\Order");
1028 Coma =
wcschr(Providers,
L',');
1041 Providers = Coma + 1;
1136 if (UncProvider ==
NULL)
1141 if (UncProvider ==
NULL)
1181 Stack->FileObject->FsContext2 = UncProvider;
1320 if (FullPath ==
NULL)
1367 CcbInitialized =
FALSE;
1369 LastOrder = (
ULONG)-1;
1467 ++
Fcb->NodeReferences;
1470 CcbInitialized =
TRUE;
1519 ULONG InputBufferSize,
1521 ULONG OutputBufferSize,
1552 Stack->Parameters.DeviceIoControl.OutputBufferLength = OutputBufferSize;
1553 Stack->Parameters.DeviceIoControl.InputBufferLength = InputBufferSize;
1555 Stack->MinorFunction = 0;
1592 Irp->AssociatedIrp.SystemBuffer =
NULL;
1619 if (References != 0)
1621 DPRINT(
"Still having refs (%ld)\n", References);
1628 if (MasterQueryContext->
Irp ==
NULL)
1675 MasterQueryContext->
Irp =
NULL;
1689 PWSTR AcceptedPrefix;
1766 if (AcceptedPrefix ==
NULL)
1781 DPRINT(
"%wZ accepted %wZ\n", &
Prefix->UncProvider->DeviceName, &
Prefix->AcceptedPrefix);
1823 while (TableStatus != 0 && TableStatus != MasterQueryContext->
LatestStatus)
1847 while (
Pos < LatestPos);
1850 if (
Pos >= LatestPos)
1903 BreakOnFirst =
TRUE;
1913 DPRINT(
"Matching prefix found: %wZ\n", &
Prefix->AcceptedPrefix);
1963 }
while (Cur !=
L'\\');
2012 if (MasterQueryContext ==
NULL)
2022 MasterQueryContext->
Irp =
Irp;
2029 ++
Prefix->NodeReferences;
2053 if (QueryPathRequest ==
NULL)
2063 if (QueryContext ==
NULL)
2086 if (QueryIrp ==
NULL)
2095 QueryContext->
Irp = QueryIrp;
2125 BreakOnFirst =
FALSE;
2177 ++
Vcb->NodeReferences;
2213 RelatedFileObject =
FileObject->RelatedFileObject;
2225 Stack->Parameters.Create.SecurityContext->DesiredAccess,
2226 Stack->Parameters.Create.ShareAccess);
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
#define InterlockedDecrement
#define FILE_DIRECTORY_FILE
DECLSPEC_NORETURN VOID NTAPI KeBugCheck(ULONG BugCheckCode)
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define DFS_DOWNLEVEL_OPEN_CONTEXT
#define NT_SUCCESS(StatCode)
static const WCHAR Cleanup[]
DRIVER_INITIALIZE DriverEntry
_In_ PIO_STACK_LOCATION _Inout_ PFILE_OBJECT _Inout_ PVCB _Outptr_result_maybenull_ PDCB _In_ PDCB _In_ PDIRENT _In_ ULONG _In_ ULONG _In_ PUNICODE_STRING _In_ PACCESS_MASK _In_ USHORT ShareAccess
NTSTATUS DfsFsdClose(PDEVICE_OBJECT DeviceObject, PIRP Irp)
NTSTATUS DfsDriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
NTSTATUS DfsFsdCleanup(PDEVICE_OBJECT DeviceObject, PIRP Irp)
NTSTATUS DfsFsdCreate(PDEVICE_OBJECT DeviceObject, PIRP Irp)
NTSTATUS DfsFsdFileSystemControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
VOID DfsUnload(PDRIVER_OBJECT DriverObject)
NTSTATUS NTAPI DfsVolumePassThrough(PDEVICE_OBJECT DeviceObject, PIRP Irp)
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define InsertHeadList(ListHead, Entry)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define PsGetCurrentThread()
NTSTATUS ExInitializeResourceLite(PULONG res)
NTSTATUS RtlAppendUnicodeToString(IN PUNICODE_STRING Str1, IN PWSTR Str2)
#define KeQuerySystemTime(t)
#define KeGetCurrentIrql()
#define ExAcquireResourceExclusiveLite(res, wait)
#define ExDeleteResourceLite(res)
#define InitializeListHead(ListHead)
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
#define FsRtlEnterFileSystem
#define FsRtlExitFileSystem
pRequest Complete(RequestStatus)
#define EXCEPTION_EXECUTE_HANDLER
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define OBJ_KERNEL_HANDLE
#define OBJ_CASE_INSENSITIVE
#define InterlockedExchangeAdd
#define IoSetCompletionRoutine(_Irp, _CompletionRoutine, _Context, _InvokeOnSuccess, _InvokeOnError, _InvokeOnCancel)
VOID NTAPI MmProbeAndLockPages(IN PMDL Mdl, IN KPROCESSOR_MODE AccessMode, IN LOCK_OPERATION Operation)
VOID NTAPI MmUnlockPages(IN PMDL Mdl)
#define ExFreePoolWithTag(_P, _T)
static OUT PIO_STATUS_BLOCK IoStatusBlock
#define InitializeObjectAttributes(p, n, a, r, s)
BOOLEAN MupOrderInitialized
NTSTATUS MupOrderedErrorList[]
VOID MupGetProviderInformation(VOID)
PMUP_MIC MupAllocateMasterIoContext(VOID)
PMUP_UNC MupCheckForUnregisteredProvider(PUNICODE_STRING RedirectorDeviceName)
VOID MupCalculateTimeout(PLARGE_INTEGER EntryTime)
ERESOURCE MupPrefixTableLock
PMUP_PFX MupAllocatePrefixEntry(ULONG PrefixLength)
PDEVICE_OBJECT mupDeviceObject
NTSTATUS NTAPI MupCreate(PDEVICE_OBJECT DeviceObject, PIRP Irp)
VOID MupSetFileObject(PFILE_OBJECT FileObject, PMUP_FCB Fcb, PMUP_CCB Ccb)
VOID MupRemoveKnownPrefixEntry(PMUP_PFX Prefix)
LIST_ENTRY MupMasterQueryList
NTSTATUS MupCloseFcb(PDEVICE_OBJECT DeviceObject, PIRP Irp, PMUP_FCB Fcb, PFILE_OBJECT FileObject)
NTSTATUS NTAPI ForwardedIoCompletionRoutine(PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Context)
NTSTATUS NTAPI MupFsControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
VOID NTAPI DeferredForwardedIoCompletionRoutine(PVOID Context)
PMUP_MQC MupAllocateMasterQueryContext(VOID)
VOID MupCleanupFcb(PDEVICE_OBJECT DeviceObject, PIRP Irp, PMUP_FCB Fcb)
VOID MupUninitializeData()
VOID MupInitializeVcb(PMUP_VCB Vcb)
LIST_ENTRY MupProviderList
PMUP_UNC AddUnregisteredProvider(PCWSTR DeviceName, ULONG ProviderOrder)
NTSTATUS CommonForwardedIoCompletionRoutine(PDEVICE_OBJECT DeviceObject, PIRP Irp, PFORWARDED_IO_CONTEXT FwdCtxt)
VOID MupCleanupVcb(PDEVICE_OBJECT DeviceObject, PIRP Irp, PMUP_VCB Vcb)
VOID MupDereferenceCcb(PMUP_CCB Ccb)
NTSTATUS MupCloseVcb(PDEVICE_OBJECT DeviceObject, PIRP Irp, PMUP_VCB Vcb, PFILE_OBJECT FileObject)
NTSTATUS BuildAndSubmitIrp(PIRP Irp, PMUP_CCB Ccb, PMUP_MIC MasterIoContext)
NTSTATUS CreateRedirectedFile(PIRP Irp, PFILE_OBJECT FileObject, PIO_SECURITY_CONTEXT SecurityContext)
PMUP_CCB MupCreateCcb(VOID)
NTSTATUS NTAPI QueryPathCompletionRoutine(PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Context)
NTSTATUS MupDereferenceMasterQueryContext(PMUP_MQC MasterQueryContext)
PMUP_UNC MupAllocateUncProvider(ULONG RedirectorDeviceNameLength)
VOID MupFreeMasterQueryContext(PMUP_MQC MasterQueryContext)
VOID MupInvalidatePrefixTable(VOID)
VOID NTAPI MupUnload(PDRIVER_OBJECT DriverObject)
NTSTATUS NTAPI MupForwardIoRequest(PDEVICE_OBJECT DeviceObject, PIRP Irp)
NTSTATUS MupRerouteOpen(PFILE_OBJECT FileObject, PMUP_UNC UncProvider)
NTSTATUS OpenMupFileSystem(PMUP_VCB Vcb, PFILE_OBJECT FileObject, ACCESS_MASK DesiredAccess, USHORT ShareAccess)
LARGE_INTEGER MupKnownPrefixTimeout
NTSTATUS NTAPI MupClose(PDEVICE_OBJECT DeviceObject, PIRP Irp)
BOOLEAN MuppIsDfsEnabled(VOID)
PIRP MupBuildIoControlRequest(PFILE_OBJECT FileObject, PVOID Context, ULONG MajorFunction, ULONG IoctlCode, PVOID InputBuffer, ULONG InputBufferSize, PVOID OutputBuffer, ULONG OutputBufferSize, PIO_COMPLETION_ROUTINE CompletionRoutine)
VOID MupDereferenceFcb(PMUP_FCB Fcb)
UNICODE_PREFIX_TABLE MupPrefixTable
NTSTATUS MupDereferenceMasterIoContext(PMUP_MIC MasterIoContext, PNTSTATUS NewStatus)
NTSTATUS BroadcastOpen(PIRP Irp)
VOID MupDereferenceUncProvider(PMUP_UNC UncProvider)
ULONG MupDecodeFileObject(PFILE_OBJECT FileObject, PMUP_FCB *pFcb, PMUP_CCB *pCcb)
VOID MupDereferenceKnownPrefix(PMUP_PFX Prefix)
VOID InitializeProvider(PCWSTR ProviderName, ULONG ProviderOrder)
VOID MupDereferenceVcb(PMUP_VCB Vcb)
VOID MupFreeNode(PVOID Node)
PMUP_FCB MupCreateFcb(VOID)
VOID MupInitializeData(VOID)
NTSTATUS RegisterUncProvider(PDEVICE_OBJECT DeviceObject, PIRP Irp)
VOID MupCloseUncProvider(PMUP_UNC UncProvider)
NTSTATUS NTAPI MupCleanup(PDEVICE_OBJECT DeviceObject, PIRP Irp)
struct _QUERY_PATH_CONTEXT * PQUERY_PATH_CONTEXT
struct _FORWARDED_IO_CONTEXT * PFORWARDED_IO_CONTEXT
#define NODE_STATUS_CLEANUP
#define FILE_SIMPLE_RIGHTS_MASK
#define NODE_STATUS_HEALTHY
#define IO_METHOD_FROM_CTL_CODE(C)
#define FSCTL_MUP_REGISTER_PROVIDER
struct _MUP_PROVIDER_REGISTRATION_INFO * PMUP_PROVIDER_REGISTRATION_INFO
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ ULONG _Out_ PNDIS_STRING _Out_ PNDIS_HANDLE KeyHandle
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
_In_ PMEMORY_AREA _In_ PVOID _In_ BOOLEAN Locked
NTSYSAPI NTSTATUS NTAPI NtOpenFile(OUT PHANDLE phFile, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG ShareMode, IN ULONG OpenMode)
#define FILE_ATTRIBUTE_VALID_FLAGS
@ KeyValuePartialInformation
@ KeyValueFullInformation
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTSYSAPI BOOLEAN NTAPI RtlEqualUnicodeString(PUNICODE_STRING String1, PUNICODE_STRING String2, BOOLEAN CaseInSensitive)
#define FILE_SHARE_VALID_FLAGS
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
#define METHOD_OUT_DIRECT
#define FILE_VALID_SET_FLAGS
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define IOCTL_REDIR_QUERY_PATH
struct _QUERY_PATH_RESPONSE * PQUERY_PATH_RESPONSE
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
NTSTATUS NTAPI IoCreateDevice(IN PDRIVER_OBJECT DriverObject, IN ULONG DeviceExtensionSize, IN PUNICODE_STRING DeviceName, IN DEVICE_TYPE DeviceType, IN ULONG DeviceCharacteristics, IN BOOLEAN Exclusive, OUT PDEVICE_OBJECT *DeviceObject)
PDEVICE_OBJECT NTAPI IoGetRelatedDeviceObject(IN PFILE_OBJECT FileObject)
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI IoCreateFile(OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PLARGE_INTEGER AllocationSize OPTIONAL, IN ULONG FileAttributes, IN ULONG ShareAccess, IN ULONG Disposition, IN ULONG CreateOptions, IN PVOID EaBuffer OPTIONAL, IN ULONG EaLength, IN CREATE_FILE_TYPE CreateFileType, IN PVOID ExtraCreateParameters OPTIONAL, IN ULONG Options)
NTSTATUS NTAPI IoCheckShareAccess(IN ACCESS_MASK DesiredAccess, IN ULONG DesiredShareAccess, IN PFILE_OBJECT FileObject, IN PSHARE_ACCESS ShareAccess, IN BOOLEAN Update)
VOID NTAPI IoRemoveShareAccess(IN PFILE_OBJECT FileObject, IN PSHARE_ACCESS ShareAccess)
#define IoCompleteRequest
PIRP NTAPI IoAllocateIrp(IN CCHAR StackSize, IN BOOLEAN ChargeQuota)
VOID NTAPI IoFreeIrp(IN PIRP Irp)
#define STATUS_INVALID_HANDLE
#define STATUS_BAD_NETWORK_NAME
#define STATUS_BAD_NETWORK_PATH
#define STATUS_REDIRECTOR_NOT_STARTED
#define STATUS_NOT_IMPLEMENTED
#define STATUS_NAME_TOO_LONG
NTSTATUS NTAPI ObReferenceObjectByHandle(IN HANDLE Handle, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, OUT PVOID *Object, OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL)
#define FILE_DEVICE_DFS_FILE_SYSTEM
#define FILE_DEVICE_MULTI_UNC_PROVIDER
#define _SEH2_AbnormalTermination()
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
#define IRP_MJ_DEVICE_CONTROL
VOID NTAPI KeBugCheckEx(_In_ ULONG BugCheckCode, _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4)
_Check_return_ _CRTIMP int __cdecl _wcsnicmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
#define STATUS_MORE_PROCESSING_REQUIRED
#define STATUS_BUFFER_TOO_SMALL
base of all file and directory entries
struct _FCB::@729::@732 Fcb
WORK_QUEUE_ITEM WorkQueueItem
PDEVICE_OBJECT DeviceObject
union _IRP::@1577 AssociatedIrp
struct _LIST_ENTRY * Flink
ERESOURCE QueryPathListLock
ULONG RedirectorDeviceNameOffset
ULONG RedirectorDeviceNameLength
BOOLEAN MailslotsSupported
LIST_ENTRY ProviderListEntry
BOOLEAN MailslotsSupported
PDEVICE_OBJECT DeviceObject
UNICODE_STRING DeviceName
PMUP_MQC MasterQueryContext
PQUERY_PATH_REQUEST QueryPathRequest
LIST_ENTRY QueryPathListEntry
PIO_SECURITY_CONTEXT SecurityContext
unsigned short MaximumLength
#define RtlZeroMemory(Destination, Length)
#define RtlMoveMemory(Destination, Source, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INVALID_DEVICE_REQUEST
#define STATUS_ACCESS_DENIED
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_NO_SUCH_FILE
#define STATUS_INVALID_USER_BUFFER
#define STATUS_INSUFFICIENT_RESOURCES
UNICODE_STRING RedirectorDeviceName
VOID NTAPI RtlRemoveUnicodePrefix(PUNICODE_PREFIX_TABLE PrefixTable, PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry)
BOOLEAN NTAPI RtlInsertUnicodePrefix(PUNICODE_PREFIX_TABLE PrefixTable, PUNICODE_STRING Prefix, PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry)
PUNICODE_PREFIX_TABLE_ENTRY NTAPI RtlFindUnicodePrefix(PUNICODE_PREFIX_TABLE PrefixTable, PUNICODE_STRING FullName, ULONG CaseInsensitiveIndex)
VOID NTAPI RtlInitializeUnicodePrefix(PUNICODE_PREFIX_TABLE PrefixTable)
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
_In_ WDFDEVICE _In_ PVOID _In_opt_ PMDL Mdl
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR OutputBuffer
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_ ULONG IoctlCode
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR InputBuffer
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
_In_ WDFREQUEST _In_opt_ PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine
VOID NTAPI ExQueueWorkItem(IN PWORK_QUEUE_ITEM WorkItem, IN WORK_QUEUE_TYPE QueueType)
#define ExInitializeWorkItem(Item, Routine, Context)
#define ExAllocatePoolWithQuotaTag(a, b, c)
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
FORCEINLINE VOID IoSetNextIrpStackLocation(_Inout_ PIRP Irp)
#define IRP_DEALLOCATE_BUFFER
#define IRP_INPUT_OPERATION
#define IRP_MJ_CREATE_NAMED_PIPE
#define IRP_MJ_CREATE_MAILSLOT
#define IO_NO_PARAMETER_CHECKING
#define IRP_MJ_FILE_SYSTEM_CONTROL
#define IRP_WRITE_OPERATION
IO_COMPLETION_ROUTINE * PIO_COMPLETION_ROUTINE
_Must_inspect_result_ typedef _In_ ULONG TableEntry
#define IO_DISK_INCREMENT
#define FO_NO_INTERMEDIATE_BUFFERING
#define ObDereferenceObject
_In_ __drv_aliasesMem PSTRING Prefix
_In_ __drv_aliasesMem PSTRING _Out_ PPREFIX_TABLE_ENTRY PrefixTableEntry