Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers...
[reactos.git] / reactos / sdk / include / xdk / iofuncs.h
diff --git a/reactos/sdk/include/xdk/iofuncs.h b/reactos/sdk/include/xdk/iofuncs.h
deleted file mode 100644 (file)
index 7fb9a3b..0000000
+++ /dev/null
@@ -1,2873 +0,0 @@
-/******************************************************************************
- *                         I/O Manager Functions                              *
- ******************************************************************************/
-
-$if (_WDMDDK_)
-/*
- * NTSTATUS
- * IoAcquireRemoveLock(
- *   IN PIO_REMOVE_LOCK  RemoveLock,
- *   IN OPTIONAL PVOID  Tag)
- */
-#if DBG
-#define IoAcquireRemoveLock(RemoveLock, Tag) \
-  IoAcquireRemoveLockEx(RemoveLock, Tag, __FILE__, __LINE__, sizeof (IO_REMOVE_LOCK))
-#else
-#define IoAcquireRemoveLock(RemoveLock, Tag) \
-  IoAcquireRemoveLockEx(RemoveLock, Tag, "", 1, sizeof (IO_REMOVE_LOCK))
-#endif
-
-/*
- * VOID
- * IoAdjustPagingPathCount(
- *   IN PLONG  Count,
- *   IN BOOLEAN  Increment)
- */
-#define IoAdjustPagingPathCount(_Count, \
-                                _Increment) \
-{ \
-  if (_Increment) \
-    { \
-      InterlockedIncrement(_Count); \
-    } \
-  else \
-    { \
-      InterlockedDecrement(_Count); \
-    } \
-}
-
-#if !defined(_M_AMD64)
-NTHALAPI
-VOID
-NTAPI
-READ_PORT_BUFFER_UCHAR(
-  IN PUCHAR Port,
-  IN PUCHAR Buffer,
-  IN ULONG Count);
-
-NTHALAPI
-VOID
-NTAPI
-READ_PORT_BUFFER_ULONG(
-  IN PULONG Port,
-  IN PULONG Buffer,
-  IN ULONG Count);
-
-NTHALAPI
-VOID
-NTAPI
-READ_PORT_BUFFER_USHORT(
-  IN PUSHORT Port,
-  IN PUSHORT Buffer,
-  IN ULONG Count);
-
-NTHALAPI
-UCHAR
-NTAPI
-READ_PORT_UCHAR(
-  IN PUCHAR Port);
-
-NTHALAPI
-ULONG
-NTAPI
-READ_PORT_ULONG(
-  IN PULONG Port);
-
-NTHALAPI
-USHORT
-NTAPI
-READ_PORT_USHORT(
-  IN PUSHORT Port);
-
-NTKERNELAPI
-VOID
-NTAPI
-READ_REGISTER_BUFFER_UCHAR(
-  IN PUCHAR Register,
-  IN PUCHAR Buffer,
-  IN ULONG Count);
-
-NTKERNELAPI
-VOID
-NTAPI
-READ_REGISTER_BUFFER_ULONG(
-  IN PULONG Register,
-  IN PULONG Buffer,
-  IN ULONG Count);
-
-NTKERNELAPI
-VOID
-NTAPI
-READ_REGISTER_BUFFER_USHORT(
-  IN PUSHORT Register,
-  IN PUSHORT Buffer,
-  IN ULONG Count);
-
-NTKERNELAPI
-UCHAR
-NTAPI
-READ_REGISTER_UCHAR(
-  IN PUCHAR Register);
-
-NTKERNELAPI
-ULONG
-NTAPI
-READ_REGISTER_ULONG(
-  IN PULONG Register);
-
-NTKERNELAPI
-USHORT
-NTAPI
-READ_REGISTER_USHORT(
-  IN PUSHORT Register);
-
-NTHALAPI
-VOID
-NTAPI
-WRITE_PORT_BUFFER_UCHAR(
-  IN PUCHAR Port,
-  IN PUCHAR Buffer,
-  IN ULONG Count);
-
-NTHALAPI
-VOID
-NTAPI
-WRITE_PORT_BUFFER_ULONG(
-  IN PULONG Port,
-  IN PULONG Buffer,
-  IN ULONG Count);
-
-NTHALAPI
-VOID
-NTAPI
-WRITE_PORT_BUFFER_USHORT(
-  IN PUSHORT Port,
-  IN PUSHORT Buffer,
-  IN ULONG Count);
-
-NTHALAPI
-VOID
-NTAPI
-WRITE_PORT_UCHAR(
-  IN PUCHAR Port,
-  IN UCHAR Value);
-
-NTHALAPI
-VOID
-NTAPI
-WRITE_PORT_ULONG(
-  IN PULONG Port,
-  IN ULONG Value);
-
-NTHALAPI
-VOID
-NTAPI
-WRITE_PORT_USHORT(
-  IN PUSHORT Port,
-  IN USHORT Value);
-
-NTKERNELAPI
-VOID
-NTAPI
-WRITE_REGISTER_BUFFER_UCHAR(
-  IN PUCHAR Register,
-  IN PUCHAR Buffer,
-  IN ULONG Count);
-
-NTKERNELAPI
-VOID
-NTAPI
-WRITE_REGISTER_BUFFER_ULONG(
-  IN PULONG Register,
-  IN PULONG Buffer,
-  IN ULONG Count);
-
-NTKERNELAPI
-VOID
-NTAPI
-WRITE_REGISTER_BUFFER_USHORT(
-  IN PUSHORT Register,
-  IN PUSHORT Buffer,
-  IN ULONG Count);
-
-NTKERNELAPI
-VOID
-NTAPI
-WRITE_REGISTER_UCHAR(
-  IN PUCHAR Register,
-  IN UCHAR Value);
-
-NTKERNELAPI
-VOID
-NTAPI
-WRITE_REGISTER_ULONG(
-  IN PULONG Register,
-  IN ULONG Value);
-
-NTKERNELAPI
-VOID
-NTAPI
-WRITE_REGISTER_USHORT(
-  IN PUSHORT Register,
-  IN USHORT Value);
-
-#else
-
-FORCEINLINE
-VOID
-READ_PORT_BUFFER_UCHAR(
-  IN PUCHAR Port,
-  IN PUCHAR Buffer,
-  IN ULONG Count)
-{
-  __inbytestring((USHORT)(ULONG_PTR)Port, Buffer, Count);
-}
-
-FORCEINLINE
-VOID
-READ_PORT_BUFFER_ULONG(
-  IN PULONG Port,
-  IN PULONG Buffer,
-  IN ULONG Count)
-{
-  __indwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count);
-}
-
-FORCEINLINE
-VOID
-READ_PORT_BUFFER_USHORT(
-  IN PUSHORT Port,
-  IN PUSHORT Buffer,
-  IN ULONG Count)
-{
-  __inwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count);
-}
-
-FORCEINLINE
-UCHAR
-READ_PORT_UCHAR(
-  IN PUCHAR Port)
-{
-  return __inbyte((USHORT)(ULONG_PTR)Port);
-}
-
-FORCEINLINE
-ULONG
-READ_PORT_ULONG(
-  IN PULONG Port)
-{
-  return __indword((USHORT)(ULONG_PTR)Port);
-}
-
-FORCEINLINE
-USHORT
-READ_PORT_USHORT(
-  IN PUSHORT Port)
-{
-  return __inword((USHORT)(ULONG_PTR)Port);
-}
-
-FORCEINLINE
-VOID
-READ_REGISTER_BUFFER_UCHAR(
-  IN PUCHAR Register,
-  IN PUCHAR Buffer,
-  IN ULONG Count)
-{
-  __movsb(Register, Buffer, Count);
-}
-
-FORCEINLINE
-VOID
-READ_REGISTER_BUFFER_ULONG(
-  IN PULONG Register,
-  IN PULONG Buffer,
-  IN ULONG Count)
-{
-  __movsd(Register, Buffer, Count);
-}
-
-FORCEINLINE
-VOID
-READ_REGISTER_BUFFER_USHORT(
-  IN PUSHORT Register,
-  IN PUSHORT Buffer,
-  IN ULONG Count)
-{
-  __movsw(Register, Buffer, Count);
-}
-
-FORCEINLINE
-UCHAR
-READ_REGISTER_UCHAR(
-  IN volatile UCHAR *Register)
-{
-  return *Register;
-}
-
-FORCEINLINE
-ULONG
-READ_REGISTER_ULONG(
-  IN volatile ULONG *Register)
-{
-  return *Register;
-}
-
-FORCEINLINE
-USHORT
-READ_REGISTER_USHORT(
-  IN volatile USHORT *Register)
-{
-  return *Register;
-}
-
-FORCEINLINE
-VOID
-WRITE_PORT_BUFFER_UCHAR(
-  IN PUCHAR Port,
-  IN PUCHAR Buffer,
-  IN ULONG Count)
-{
-  __outbytestring((USHORT)(ULONG_PTR)Port, Buffer, Count);
-}
-
-FORCEINLINE
-VOID
-WRITE_PORT_BUFFER_ULONG(
-  IN PULONG Port,
-  IN PULONG Buffer,
-  IN ULONG Count)
-{
-  __outdwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count);
-}
-
-FORCEINLINE
-VOID
-WRITE_PORT_BUFFER_USHORT(
-  IN PUSHORT Port,
-  IN PUSHORT Buffer,
-  IN ULONG Count)
-{
-  __outwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count);
-}
-
-FORCEINLINE
-VOID
-WRITE_PORT_UCHAR(
-  IN PUCHAR Port,
-  IN UCHAR Value)
-{
-  __outbyte((USHORT)(ULONG_PTR)Port, Value);
-}
-
-FORCEINLINE
-VOID
-WRITE_PORT_ULONG(
-  IN PULONG Port,
-  IN ULONG Value)
-{
-  __outdword((USHORT)(ULONG_PTR)Port, Value);
-}
-
-FORCEINLINE
-VOID
-WRITE_PORT_USHORT(
-  IN PUSHORT Port,
-  IN USHORT Value)
-{
-  __outword((USHORT)(ULONG_PTR)Port, Value);
-}
-
-FORCEINLINE
-VOID
-WRITE_REGISTER_BUFFER_UCHAR(
-  IN PUCHAR Register,
-  IN PUCHAR Buffer,
-  IN ULONG Count)
-{
-  LONG Synch;
-  __movsb(Register, Buffer, Count);
-  InterlockedOr(&Synch, 1);
-}
-
-FORCEINLINE
-VOID
-WRITE_REGISTER_BUFFER_ULONG(
-  IN PULONG Register,
-  IN PULONG Buffer,
-  IN ULONG Count)
-{
-  LONG Synch;
-  __movsd(Register, Buffer, Count);
-  InterlockedOr(&Synch, 1);
-}
-
-FORCEINLINE
-VOID
-WRITE_REGISTER_BUFFER_USHORT(
-  IN PUSHORT Register,
-  IN PUSHORT Buffer,
-  IN ULONG Count)
-{
-  LONG Synch;
-  __movsw(Register, Buffer, Count);
-  InterlockedOr(&Synch, 1);
-}
-
-FORCEINLINE
-VOID
-WRITE_REGISTER_UCHAR(
-  IN volatile UCHAR *Register,
-  IN UCHAR Value)
-{
-  LONG Synch;
-  *Register = Value;
-  InterlockedOr(&Synch, 1);
-}
-
-FORCEINLINE
-VOID
-WRITE_REGISTER_ULONG(
-  IN volatile ULONG *Register,
-  IN ULONG Value)
-{
-  LONG Synch;
-  *Register = Value;
-  InterlockedOr(&Synch, 1);
-}
-
-FORCEINLINE
-VOID
-WRITE_REGISTER_USHORT(
-  IN volatile USHORT *Register,
-  IN USHORT Value)
-{
-  LONG Sync;
-  *Register = Value;
-  InterlockedOr(&Sync, 1);
-}
-#endif
-
-#if defined(USE_DMA_MACROS) && !defined(_NTHAL_) && \
-   (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_)
-
-#define DMA_MACROS_DEFINED
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-_IRQL_requires_min_(DISPATCH_LEVEL)
-FORCEINLINE
-NTSTATUS
-IoAllocateAdapterChannel(
-  _In_ PDMA_ADAPTER DmaAdapter,
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ ULONG NumberOfMapRegisters,
-  _In_ PDRIVER_CONTROL ExecutionRoutine,
-  _In_ PVOID Context)
-{
-  PALLOCATE_ADAPTER_CHANNEL AllocateAdapterChannel;
-  AllocateAdapterChannel =
-      *(DmaAdapter)->DmaOperations->AllocateAdapterChannel;
-  ASSERT(AllocateAdapterChannel);
-  return AllocateAdapterChannel(DmaAdapter,
-                                DeviceObject,
-                                NumberOfMapRegisters,
-                                ExecutionRoutine,
-                                Context);
-}
-
-FORCEINLINE
-BOOLEAN
-NTAPI
-IoFlushAdapterBuffers(
-  _In_ PDMA_ADAPTER DmaAdapter,
-  _In_ PMDL Mdl,
-  _In_ PVOID MapRegisterBase,
-  _In_ PVOID CurrentVa,
-  _In_ ULONG Length,
-  _In_ BOOLEAN WriteToDevice)
-{
-  PFLUSH_ADAPTER_BUFFERS FlushAdapterBuffers;
-  FlushAdapterBuffers = *(DmaAdapter)->DmaOperations->FlushAdapterBuffers;
-  ASSERT(FlushAdapterBuffers);
-  return FlushAdapterBuffers(DmaAdapter,
-                             Mdl,
-                             MapRegisterBase,
-                             CurrentVa,
-                             Length,
-                             WriteToDevice);
-}
-
-FORCEINLINE
-VOID
-NTAPI
-IoFreeAdapterChannel(
-  _In_ PDMA_ADAPTER DmaAdapter)
-{
-  PFREE_ADAPTER_CHANNEL FreeAdapterChannel;
-  FreeAdapterChannel = *(DmaAdapter)->DmaOperations->FreeAdapterChannel;
-  ASSERT(FreeAdapterChannel);
-  FreeAdapterChannel(DmaAdapter);
-}
-
-FORCEINLINE
-VOID
-NTAPI
-IoFreeMapRegisters(
-  _In_ PDMA_ADAPTER DmaAdapter,
-  _In_ PVOID MapRegisterBase,
-  _In_ ULONG NumberOfMapRegisters)
-{
-  PFREE_MAP_REGISTERS FreeMapRegisters;
-  FreeMapRegisters = *(DmaAdapter)->DmaOperations->FreeMapRegisters;
-  ASSERT(FreeMapRegisters);
-  FreeMapRegisters(DmaAdapter, MapRegisterBase, NumberOfMapRegisters);
-}
-
-FORCEINLINE
-PHYSICAL_ADDRESS
-NTAPI
-IoMapTransfer(
-  _In_ PDMA_ADAPTER DmaAdapter,
-  _In_ PMDL Mdl,
-  _In_ PVOID MapRegisterBase,
-  _In_ PVOID CurrentVa,
-  _Inout_ PULONG Length,
-  _In_ BOOLEAN WriteToDevice)
-{
-  PMAP_TRANSFER MapTransfer;
-
-  MapTransfer = *(DmaAdapter)->DmaOperations->MapTransfer;
-  ASSERT(MapTransfer);
-  return MapTransfer(DmaAdapter,
-                     Mdl,
-                     MapRegisterBase,
-                     CurrentVa,
-                     Length,
-                     WriteToDevice);
-}
-#endif
-
-$endif (_WDMDDK_)
-$if (_NTDDK_)
-/*
- * VOID IoAssignArcName(
- *   IN PUNICODE_STRING  ArcName,
- *   IN PUNICODE_STRING  DeviceName);
- */
-#define IoAssignArcName(_ArcName, _DeviceName) ( \
-  IoCreateSymbolicLink((_ArcName), (_DeviceName)))
-
-/*
- * VOID
- * IoDeassignArcName(
- *   IN PUNICODE_STRING  ArcName)
- */
-#define IoDeassignArcName IoDeleteSymbolicLink
-
-FORCEINLINE
-VOID
-NTAPI
-IoInitializeDriverCreateContext(
-  PIO_DRIVER_CREATE_CONTEXT DriverContext)
-{
-  RtlZeroMemory(DriverContext, sizeof(IO_DRIVER_CREATE_CONTEXT));
-  DriverContext->Size = sizeof(IO_DRIVER_CREATE_CONTEXT);
-}
-
-$endif (_NTDDK_)
-$if (_NTIFS_)
-#define IoIsFileOpenedExclusively(FileObject) ( \
-    (BOOLEAN) !(                                \
-    (FileObject)->SharedRead ||                 \
-    (FileObject)->SharedWrite ||                \
-    (FileObject)->SharedDelete                  \
-    )                                           \
-)
-
-#if (NTDDI_VERSION == NTDDI_WIN2K)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoRegisterFsRegistrationChangeEx(
-  _In_ PDRIVER_OBJECT DriverObject,
-  _In_ PDRIVER_FS_NOTIFICATION DriverNotificationRoutine);
-#endif
-$endif (_NTIFS_)
-#if (NTDDI_VERSION >= NTDDI_WIN2K)
-
-$if (_WDMDDK_)
-_Acquires_lock_(_Global_cancel_spin_lock_)
-_Requires_lock_not_held_(_Global_cancel_spin_lock_)
-_IRQL_requires_max_(DISPATCH_LEVEL)
-_IRQL_raises_(DISPATCH_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoAcquireCancelSpinLock(
-  _Out_ _At_(*Irql, _IRQL_saves_) PKIRQL Irql);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoAcquireRemoveLockEx(
-  _Inout_ PIO_REMOVE_LOCK RemoveLock,
-  _In_opt_ PVOID Tag,
-  _In_ PCSTR File,
-  _In_ ULONG Line,
-  _In_ ULONG RemlockSize);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-_Ret_range_(<=, 0)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoAllocateDriverObjectExtension(
-  _In_ PDRIVER_OBJECT DriverObject,
-  _In_ PVOID ClientIdentificationAddress,
-  _In_ ULONG DriverObjectExtensionSize,
-  _Post_ _At_(*DriverObjectExtension, _When_(return==0,
-    __drv_aliasesMem __drv_allocatesMem(Mem) _Post_notnull_))
-  _When_(return == 0, _Outptr_result_bytebuffer_(DriverObjectExtensionSize))
-    PVOID *DriverObjectExtension);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-PVOID
-NTAPI
-IoAllocateErrorLogEntry(
-  _In_ PVOID IoObject,
-  _In_ UCHAR EntrySize);
-
-_Must_inspect_result_
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-PIRP
-NTAPI
-IoAllocateIrp(
-  _In_ CCHAR StackSize,
-  _In_ BOOLEAN ChargeQuota);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-PMDL
-NTAPI
-IoAllocateMdl(
-  _In_opt_ __drv_aliasesMem PVOID VirtualAddress,
-  _In_ ULONG Length,
-  _In_ BOOLEAN SecondaryBuffer,
-  _In_ BOOLEAN ChargeQuota,
-  _Inout_opt_ PIRP Irp);
-
-__drv_allocatesMem(Mem)
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-PIO_WORKITEM
-NTAPI
-IoAllocateWorkItem(
-  _In_ PDEVICE_OBJECT DeviceObject);
-
-_IRQL_requires_max_(APC_LEVEL)
-_Ret_range_(<=, 0)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoAttachDevice(
-  _In_ _Kernel_requires_resource_held_(Memory) _When_(return==0, __drv_aliasesMem)
-    PDEVICE_OBJECT SourceDevice,
-  _In_ PUNICODE_STRING TargetDevice,
-  _Out_ PDEVICE_OBJECT *AttachedDevice);
-
-_Must_inspect_result_
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-PDEVICE_OBJECT
-NTAPI
-IoAttachDeviceToDeviceStack(
-  _In_ _Kernel_requires_resource_held_(Memory) _When_(return!=0, __drv_aliasesMem)
-    PDEVICE_OBJECT SourceDevice,
-  _In_ PDEVICE_OBJECT TargetDevice);
-
-_Must_inspect_result_
-__drv_aliasesMem
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-PIRP
-NTAPI
-IoBuildAsynchronousFsdRequest(
-  _In_ ULONG MajorFunction,
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _Inout_opt_ PVOID Buffer,
-  _In_opt_ ULONG Length,
-  _In_opt_ PLARGE_INTEGER StartingOffset,
-  _In_opt_ PIO_STATUS_BLOCK IoStatusBlock);
-
-_Must_inspect_result_
-__drv_aliasesMem
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-PIRP
-NTAPI
-IoBuildDeviceIoControlRequest(
-  _In_ ULONG IoControlCode,
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_opt_ PVOID InputBuffer,
-  _In_ ULONG InputBufferLength,
-  _Out_opt_ PVOID OutputBuffer,
-  _In_ ULONG OutputBufferLength,
-  _In_ BOOLEAN InternalDeviceIoControl,
-  _In_opt_ PKEVENT Event,
-  _Out_ PIO_STATUS_BLOCK IoStatusBlock);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoBuildPartialMdl(
-  _In_ PMDL SourceMdl,
-  _Inout_ PMDL TargetMdl,
-  _In_ PVOID VirtualAddress,
-  _In_ ULONG Length);
-
-_Must_inspect_result_
-__drv_aliasesMem
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-PIRP
-NTAPI
-IoBuildSynchronousFsdRequest(
-  _In_ ULONG MajorFunction,
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _Inout_opt_ PVOID Buffer,
-  _In_opt_ ULONG Length,
-  _In_opt_ PLARGE_INTEGER StartingOffset,
-  _In_ PKEVENT Event,
-  _Out_ PIO_STATUS_BLOCK IoStatusBlock);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-_Success_(TRUE)
-NTKERNELAPI
-NTSTATUS
-FASTCALL
-IofCallDriver(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _Inout_ __drv_aliasesMem PIRP Irp);
-#define IoCallDriver IofCallDriver
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-VOID
-FASTCALL
-IofCompleteRequest(
-  _In_ PIRP Irp,
-  _In_ CCHAR PriorityBoost);
-#define IoCompleteRequest IofCompleteRequest
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-BOOLEAN
-NTAPI
-IoCancelIrp(
-  _In_ PIRP Irp);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCheckShareAccess(
-  _In_ ACCESS_MASK DesiredAccess,
-  _In_ ULONG DesiredShareAccess,
-  _Inout_ PFILE_OBJECT FileObject,
-  _Inout_ PSHARE_ACCESS ShareAccess,
-  _In_ BOOLEAN Update);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-VOID
-FASTCALL
-IofCompleteRequest(
-  _In_ PIRP Irp,
-  _In_ CCHAR PriorityBoost);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoConnectInterrupt(
-  _Out_ PKINTERRUPT *InterruptObject,
-  _In_ PKSERVICE_ROUTINE ServiceRoutine,
-  _In_opt_ PVOID ServiceContext,
-  _In_opt_ PKSPIN_LOCK SpinLock,
-  _In_ ULONG Vector,
-  _In_ KIRQL Irql,
-  _In_ KIRQL SynchronizeIrql,
-  _In_ KINTERRUPT_MODE InterruptMode,
-  _In_ BOOLEAN ShareVector,
-  _In_ KAFFINITY ProcessorEnableMask,
-  _In_ BOOLEAN FloatingSave);
-
-_IRQL_requires_max_(APC_LEVEL)
-_Ret_range_(<=, 0)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCreateDevice(
-  _In_ PDRIVER_OBJECT DriverObject,
-  _In_ ULONG DeviceExtensionSize,
-  _In_opt_ PUNICODE_STRING DeviceName,
-  _In_ DEVICE_TYPE DeviceType,
-  _In_ ULONG DeviceCharacteristics,
-  _In_ BOOLEAN Exclusive,
-  _Outptr_result_nullonfailure_
-  _At_(*DeviceObject,
-    __drv_allocatesMem(Mem)
-    _When_(((_In_function_class_(DRIVER_INITIALIZE))
-      ||(_In_function_class_(DRIVER_DISPATCH))),
-      __drv_aliasesMem))
-    PDEVICE_OBJECT *DeviceObject);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCreateFile(
-  _Out_ PHANDLE FileHandle,
-  _In_ ACCESS_MASK DesiredAccess,
-  _In_ POBJECT_ATTRIBUTES ObjectAttributes,
-  _Out_ PIO_STATUS_BLOCK IoStatusBlock,
-  _In_opt_ PLARGE_INTEGER AllocationSize,
-  _In_ ULONG FileAttributes,
-  _In_ ULONG ShareAccess,
-  _In_ ULONG Disposition,
-  _In_ ULONG CreateOptions,
-  _In_opt_ PVOID EaBuffer,
-  _In_ ULONG EaLength,
-  _In_ CREATE_FILE_TYPE CreateFileType,
-  _In_opt_ PVOID InternalParameters,
-  _In_ ULONG Options);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-PKEVENT
-NTAPI
-IoCreateNotificationEvent(
-  _In_ PUNICODE_STRING EventName,
-  _Out_ PHANDLE EventHandle);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCreateSymbolicLink(
-  _In_ PUNICODE_STRING SymbolicLinkName,
-  _In_ PUNICODE_STRING DeviceName);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-PKEVENT
-NTAPI
-IoCreateSynchronizationEvent(
-  _In_ PUNICODE_STRING EventName,
-  _Out_ PHANDLE EventHandle);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCreateUnprotectedSymbolicLink(
-  _In_ PUNICODE_STRING SymbolicLinkName,
-  _In_ PUNICODE_STRING DeviceName);
-
-_IRQL_requires_max_(APC_LEVEL)
-_Kernel_clear_do_init_(__yes)
-NTKERNELAPI
-VOID
-NTAPI
-IoDeleteDevice(
-  _In_ _Kernel_requires_resource_held_(Memory) __drv_freesMem(Mem)
-    PDEVICE_OBJECT DeviceObject);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoDeleteSymbolicLink(
-  _In_ PUNICODE_STRING SymbolicLinkName);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoDetachDevice(
-  _Inout_ PDEVICE_OBJECT TargetDevice);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoDisconnectInterrupt(
-  _In_ PKINTERRUPT InterruptObject);
-
-__drv_freesMem(Mem)
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoFreeIrp(
-  _In_ PIRP Irp);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoFreeMdl(
-  PMDL Mdl);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoFreeWorkItem(
-  _In_ __drv_freesMem(Mem) PIO_WORKITEM IoWorkItem);
-
-NTKERNELAPI
-PDEVICE_OBJECT
-NTAPI
-IoGetAttachedDevice(
-  IN PDEVICE_OBJECT DeviceObject);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-PDEVICE_OBJECT
-NTAPI
-IoGetAttachedDeviceReference(
-  _In_ PDEVICE_OBJECT DeviceObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoGetBootDiskInformation(
-  _Inout_ PBOOTDISK_INFORMATION BootDiskInformation,
-  _In_ ULONG Size);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-_Must_inspect_result_
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoGetDeviceInterfaceAlias(
-  _In_ PUNICODE_STRING SymbolicLinkName,
-  _In_ CONST GUID *AliasInterfaceClassGuid,
-  _Out_
-  _When_(return==0, _At_(AliasSymbolicLinkName->Buffer, __drv_allocatesMem(Mem)))
-    PUNICODE_STRING AliasSymbolicLinkName);
-
-NTKERNELAPI
-PEPROCESS
-NTAPI
-IoGetCurrentProcess(VOID);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-_Must_inspect_result_
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoGetDeviceInterfaces(
-  _In_ CONST GUID *InterfaceClassGuid,
-  _In_opt_ PDEVICE_OBJECT PhysicalDeviceObject,
-  _In_ ULONG Flags,
-  _Outptr_result_nullonfailure_
-  _At_(*SymbolicLinkList, _When_(return==0, __drv_allocatesMem(Mem)))
-    PZZWSTR *SymbolicLinkList);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoGetDeviceObjectPointer(
-  _In_ PUNICODE_STRING ObjectName,
-  _In_ ACCESS_MASK DesiredAccess,
-  _Out_ PFILE_OBJECT *FileObject,
-  _Out_ PDEVICE_OBJECT *DeviceObject);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-_When_((DeviceProperty & __string_type),
-  _At_(PropertyBuffer, _Post_z_))
-_When_((DeviceProperty & __multiString_type),
-  _At_(PropertyBuffer, _Post_ _NullNull_terminated_))
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoGetDeviceProperty(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ DEVICE_REGISTRY_PROPERTY DeviceProperty,
-  _In_ ULONG BufferLength,
-  _Out_writes_bytes_opt_(BufferLength) PVOID PropertyBuffer,
-  _Deref_out_range_(<=, BufferLength) PULONG ResultLength);
-
-_Must_inspect_result_
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-PDMA_ADAPTER
-NTAPI
-IoGetDmaAdapter(
-  _In_opt_ PDEVICE_OBJECT PhysicalDeviceObject,
-  _In_ PDEVICE_DESCRIPTION DeviceDescription,
-  _Out_ _When_(return!=0, _Kernel_IoGetDmaAdapter_ _At_(*NumberOfMapRegisters, _Must_inspect_result_))
-    PULONG NumberOfMapRegisters);
-
-__drv_aliasesMem
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-PVOID
-NTAPI
-IoGetDriverObjectExtension(
-  _In_ PDRIVER_OBJECT DriverObject,
-  _In_ PVOID ClientIdentificationAddress);
-
-_IRQL_requires_max_(APC_LEVEL)
-NTKERNELAPI
-PVOID
-NTAPI
-IoGetInitialStack(VOID);
-
-NTKERNELAPI
-PDEVICE_OBJECT
-NTAPI
-IoGetRelatedDeviceObject(
-  _In_ PFILE_OBJECT FileObject);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoQueueWorkItem(
-  _Inout_ PIO_WORKITEM IoWorkItem,
-  _In_ PIO_WORKITEM_ROUTINE WorkerRoutine,
-  _In_ WORK_QUEUE_TYPE QueueType,
-  _In_opt_ __drv_aliasesMem PVOID Context);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoInitializeIrp(
-  _Inout_ PIRP Irp,
-  _In_ USHORT PacketSize,
-  _In_ CCHAR StackSize);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoInitializeRemoveLockEx(
-  _Out_ PIO_REMOVE_LOCK Lock,
-  _In_ ULONG AllocateTag,
-  _In_ ULONG MaxLockedMinutes,
-  _In_ ULONG HighWatermark,
-  _In_ ULONG RemlockSize);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoInitializeTimer(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ PIO_TIMER_ROUTINE TimerRoutine,
-  _In_opt_ __drv_aliasesMem PVOID Context);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoInvalidateDeviceRelations(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ DEVICE_RELATION_TYPE Type);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoInvalidateDeviceState(
-  _In_ PDEVICE_OBJECT PhysicalDeviceObject);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-BOOLEAN
-NTAPI
-IoIsWdmVersionAvailable(
-  _When_(MajorVersion!=1&&MajorVersion!=6, _In_ __drv_reportError("MajorVersion must be 1 or 6"))
-    UCHAR MajorVersion,
-  _In_ _When_(MinorVersion!=0 && MinorVersion!=5 &&
-              MinorVersion!=16 && MinorVersion!=32 &&
-              MinorVersion!=48, __drv_reportError("MinorVersion must be 0, 0x5, 0x10, 0x20, or 0x30"))
-    UCHAR MinorVersion);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-_Must_inspect_result_
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoOpenDeviceInterfaceRegistryKey(
-  _In_ PUNICODE_STRING SymbolicLinkName,
-  _In_ ACCESS_MASK DesiredAccess,
-  _Out_ PHANDLE DeviceInterfaceKey);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-_Must_inspect_result_
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoOpenDeviceRegistryKey(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ ULONG DevInstKeyType,
-  _In_ ACCESS_MASK DesiredAccess,
-  _Out_ PHANDLE DevInstRegKey);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-_Must_inspect_result_
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoRegisterDeviceInterface(
-  _In_ PDEVICE_OBJECT PhysicalDeviceObject,
-  _In_ CONST GUID *InterfaceClassGuid,
-  _In_opt_ PUNICODE_STRING ReferenceString,
-  _Out_ _When_(return==0, _At_(SymbolicLinkName->Buffer, __drv_allocatesMem(Mem)))
-    PUNICODE_STRING SymbolicLinkName);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-_Must_inspect_result_
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoRegisterPlugPlayNotification(
-  _In_ IO_NOTIFICATION_EVENT_CATEGORY EventCategory,
-  _In_ ULONG EventCategoryFlags,
-  _In_opt_ PVOID EventCategoryData,
-  _In_ PDRIVER_OBJECT DriverObject,
-  _In_ PDRIVER_NOTIFICATION_CALLBACK_ROUTINE CallbackRoutine,
-  _Inout_opt_ __drv_aliasesMem PVOID Context,
-  _Outptr_result_nullonfailure_
-  _At_(*NotificationEntry, _When_(return==0, __drv_allocatesMem(Mem)))
-    PVOID *NotificationEntry);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoRegisterShutdownNotification(
-  _In_ PDEVICE_OBJECT DeviceObject);
-
-_Requires_lock_held_(_Global_cancel_spin_lock_)
-_Releases_lock_(_Global_cancel_spin_lock_)
-_IRQL_requires_max_(DISPATCH_LEVEL)
-_IRQL_requires_min_(DISPATCH_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoReleaseCancelSpinLock(
-  _In_ _IRQL_restores_ _IRQL_uses_cancel_ KIRQL Irql);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoReleaseRemoveLockAndWaitEx(
-  _Inout_ PIO_REMOVE_LOCK RemoveLock,
-  _In_opt_ PVOID Tag,
-  _In_ ULONG RemlockSize);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoReleaseRemoveLockEx(
-  _Inout_ PIO_REMOVE_LOCK RemoveLock,
-  _In_opt_ PVOID Tag,
-  _In_ ULONG RemlockSize);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoRemoveShareAccess(
-  _In_ PFILE_OBJECT FileObject,
-  _Inout_ PSHARE_ACCESS ShareAccess);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoReportTargetDeviceChange(
-  _In_ PDEVICE_OBJECT PhysicalDeviceObject,
-  _In_ PVOID NotificationStructure);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoReportTargetDeviceChangeAsynchronous(
-  _In_ PDEVICE_OBJECT PhysicalDeviceObject,
-  _In_ PVOID NotificationStructure,
-  _In_opt_ PDEVICE_CHANGE_COMPLETE_CALLBACK Callback,
-  _In_opt_ PVOID Context);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoRequestDeviceEject(
-  _In_ PDEVICE_OBJECT PhysicalDeviceObject);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoReuseIrp(
-  _Inout_ PIRP Irp,
-  _In_ NTSTATUS Status);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-_Must_inspect_result_
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoSetDeviceInterfaceState(
-  _In_ PUNICODE_STRING SymbolicLinkName,
-  _In_ BOOLEAN Enable);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoSetShareAccess(
-  _In_ ACCESS_MASK DesiredAccess,
-  _In_ ULONG DesiredShareAccess,
-  _Inout_ PFILE_OBJECT FileObject,
-  _Out_ PSHARE_ACCESS ShareAccess);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-_IRQL_requires_min_(DISPATCH_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoStartNextPacket(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ BOOLEAN Cancelable);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoStartNextPacketByKey(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ BOOLEAN Cancelable,
-  _In_ ULONG Key);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoStartPacket(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ PIRP Irp,
-  _In_opt_ PULONG Key,
-  _In_opt_ PDRIVER_CANCEL CancelFunction);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoStartTimer(
-  _In_ PDEVICE_OBJECT DeviceObject);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoStopTimer(
-  _In_ PDEVICE_OBJECT DeviceObject);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-__drv_freesMem(Pool)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoUnregisterPlugPlayNotification(
-  _In_ PVOID NotificationEntry);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoUnregisterShutdownNotification(
-  _In_ PDEVICE_OBJECT DeviceObject);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoUpdateShareAccess(
-  _In_ PFILE_OBJECT FileObject,
-  _Inout_ PSHARE_ACCESS ShareAccess);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIAllocateInstanceIds(
-  _In_ GUID *Guid,
-  _In_ ULONG InstanceCount,
-  _Out_ ULONG *FirstInstanceId);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIQuerySingleInstanceMultiple(
-  _In_reads_(ObjectCount) PVOID *DataBlockObjectList,
-  _In_reads_(ObjectCount) PUNICODE_STRING InstanceNames,
-  _In_ ULONG ObjectCount,
-  _Inout_ ULONG *InOutBufferSize,
-  _Out_writes_bytes_opt_(*InOutBufferSize) PVOID OutBuffer);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIRegistrationControl(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ ULONG Action);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMISuggestInstanceName(
-  _In_opt_ PDEVICE_OBJECT PhysicalDeviceObject,
-  _In_opt_ PUNICODE_STRING SymbolicLinkName,
-  _In_ BOOLEAN CombineNames,
-  _Out_ PUNICODE_STRING SuggestedInstanceName);
-
-_Must_inspect_result_
-_IRQL_requires_max_(DISPATCH_LEVEL)
-_Ret_range_(<=, 0)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIWriteEvent(
-  _Inout_ _When_(return==0, __drv_aliasesMem) PVOID WnodeEventItem);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoWriteErrorLogEntry(
-  _In_ PVOID ElEntry);
-
-NTKERNELAPI
-PIRP
-NTAPI
-IoGetTopLevelIrp(VOID);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoRegisterLastChanceShutdownNotification(
-  _In_ PDEVICE_OBJECT DeviceObject);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoSetTopLevelIrp(
-  _In_opt_ PIRP Irp);
-
-$endif (_WDMDDK_)
-$if (_NTDDK_)
-#if !(defined(USE_DMA_MACROS) && (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_))
-_IRQL_requires_max_(DISPATCH_LEVEL)
-_IRQL_requires_min_(DISPATCH_LEVEL)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoAllocateAdapterChannel(
-  _In_ PADAPTER_OBJECT AdapterObject,
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ ULONG NumberOfMapRegisters,
-  _In_ PDRIVER_CONTROL ExecutionRoutine,
-  _In_ PVOID Context);
-#endif
-
-#if !defined(DMA_MACROS_DEFINED)
-//DECLSPEC_DEPRECATED_DDK
-NTHALAPI
-PHYSICAL_ADDRESS
-NTAPI
-IoMapTransfer(
-  _In_ PADAPTER_OBJECT AdapterObject,
-  _In_ PMDL Mdl,
-  _In_ PVOID MapRegisterBase,
-  _In_ PVOID CurrentVa,
-  _Inout_ PULONG Length,
-  _In_ BOOLEAN WriteToDevice);
-#endif
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-_IRQL_requires_min_(DISPATCH_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoAllocateController(
-  _In_ PCONTROLLER_OBJECT ControllerObject,
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ PDRIVER_CONTROL ExecutionRoutine,
-  _In_opt_ PVOID Context);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-PCONTROLLER_OBJECT
-NTAPI
-IoCreateController(
-  _In_ ULONG Size);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoDeleteController(
-  _In_ PCONTROLLER_OBJECT ControllerObject);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-_IRQL_requires_min_(DISPATCH_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoFreeController(
-  _In_ PCONTROLLER_OBJECT ControllerObject);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-PCONFIGURATION_INFORMATION
-NTAPI
-IoGetConfigurationInformation(VOID);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-PDEVICE_OBJECT
-NTAPI
-IoGetDeviceToVerify(
-  _In_ PETHREAD Thread);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoCancelFileOpen(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ PFILE_OBJECT FileObject);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-PGENERIC_MAPPING
-NTAPI
-IoGetFileObjectGenericMapping(VOID);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-PIRP
-NTAPI
-IoMakeAssociatedIrp(
-  _In_ PIRP Irp,
-  _In_ CCHAR StackSize);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoQueryDeviceDescription(
-  _In_opt_ PINTERFACE_TYPE BusType,
-  _In_opt_ PULONG BusNumber,
-  _In_opt_ PCONFIGURATION_TYPE ControllerType,
-  _In_opt_ PULONG ControllerNumber,
-  _In_opt_ PCONFIGURATION_TYPE PeripheralType,
-  _In_opt_ PULONG PeripheralNumber,
-  _In_ PIO_QUERY_DEVICE_ROUTINE CalloutRoutine,
-  _Inout_opt_ PVOID Context);
-
-_IRQL_requires_max_(APC_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoRaiseHardError(
-  _In_ PIRP Irp,
-  _In_opt_ PVPB Vpb,
-  _In_ PDEVICE_OBJECT RealDeviceObject);
-
-_IRQL_requires_max_(APC_LEVEL)
-NTKERNELAPI
-BOOLEAN
-NTAPI
-IoRaiseInformationalHardError(
-  _In_ NTSTATUS ErrorStatus,
-  _In_opt_ PUNICODE_STRING String,
-  _In_opt_ PKTHREAD Thread);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoRegisterBootDriverReinitialization(
-  _In_ PDRIVER_OBJECT DriverObject,
-  _In_ PDRIVER_REINITIALIZE DriverReinitializationRoutine,
-  _In_opt_ PVOID Context);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoRegisterDriverReinitialization(
-  _In_ PDRIVER_OBJECT DriverObject,
-  _In_ PDRIVER_REINITIALIZE DriverReinitializationRoutine,
-  _In_opt_ PVOID Context);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoAttachDeviceByPointer(
-  _In_ PDEVICE_OBJECT SourceDevice,
-  _In_ PDEVICE_OBJECT TargetDevice);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-_Must_inspect_result_
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoReportDetectedDevice(
-  _In_ PDRIVER_OBJECT DriverObject,
-  _In_ INTERFACE_TYPE LegacyBusType,
-  _In_ ULONG BusNumber,
-  _In_ ULONG SlotNumber,
-  _In_opt_ PCM_RESOURCE_LIST ResourceList,
-  _In_opt_ PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirements,
-  _In_ BOOLEAN ResourceAssigned,
-  _Inout_ PDEVICE_OBJECT *DeviceObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoReportResourceForDetection(
-  _In_ PDRIVER_OBJECT DriverObject,
-  _In_reads_bytes_opt_(DriverListSize) PCM_RESOURCE_LIST DriverList,
-  _In_opt_ ULONG DriverListSize,
-  _In_opt_ PDEVICE_OBJECT DeviceObject,
-  _In_reads_bytes_opt_(DeviceListSize) PCM_RESOURCE_LIST DeviceList,
-  _In_opt_ ULONG DeviceListSize,
-  _Out_ PBOOLEAN ConflictDetected);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoReportResourceUsage(
-  _In_opt_ PUNICODE_STRING DriverClassName,
-  _In_ PDRIVER_OBJECT DriverObject,
-  _In_reads_bytes_opt_(DriverListSize) PCM_RESOURCE_LIST DriverList,
-  _In_opt_ ULONG DriverListSize,
-  _In_opt_ PDEVICE_OBJECT DeviceObject,
-  _In_reads_bytes_opt_(DeviceListSize) PCM_RESOURCE_LIST DeviceList,
-  _In_opt_ ULONG DeviceListSize,
-  _In_ BOOLEAN OverrideConflict,
-  _Out_ PBOOLEAN ConflictDetected);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoSetHardErrorOrVerifyDevice(
-  _In_ PIRP Irp,
-  _In_ PDEVICE_OBJECT DeviceObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoAssignResources(
-  _In_ PUNICODE_STRING RegistryPath,
-  _In_opt_ PUNICODE_STRING DriverClassName,
-  _In_ PDRIVER_OBJECT DriverObject,
-  _In_opt_ PDEVICE_OBJECT DeviceObject,
-  _In_opt_ PIO_RESOURCE_REQUIREMENTS_LIST RequestedResources,
-  _Inout_ PCM_RESOURCE_LIST *AllocatedResources);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-BOOLEAN
-NTAPI
-IoSetThreadHardErrorMode(
-  _In_ BOOLEAN EnableHardErrors);
-
-$endif (_NTDDK_)
-$if (_NTIFS_)
-
-NTKERNELAPI
-VOID
-NTAPI
-IoAcquireVpbSpinLock(
-  _Out_ PKIRQL Irql);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCheckDesiredAccess(
-  _Inout_ PACCESS_MASK DesiredAccess,
-  _In_ ACCESS_MASK GrantedAccess);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCheckEaBufferValidity(
-  _In_ PFILE_FULL_EA_INFORMATION EaBuffer,
-  _In_ ULONG EaLength,
-  _Out_ PULONG ErrorOffset);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCheckFunctionAccess(
-  _In_ ACCESS_MASK GrantedAccess,
-  _In_ UCHAR MajorFunction,
-  _In_ UCHAR MinorFunction,
-  _In_ ULONG IoControlCode,
-  _In_opt_ PVOID Argument1,
-  _In_opt_ PVOID Argument2);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCheckQuerySetFileInformation(
-  _In_ FILE_INFORMATION_CLASS FileInformationClass,
-  _In_ ULONG Length,
-  _In_ BOOLEAN SetOperation);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCheckQuerySetVolumeInformation(
-  _In_ FS_INFORMATION_CLASS FsInformationClass,
-  _In_ ULONG Length,
-  _In_ BOOLEAN SetOperation);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCheckQuotaBufferValidity(
-  _In_ PFILE_QUOTA_INFORMATION QuotaBuffer,
-  _In_ ULONG QuotaLength,
-  _Out_ PULONG ErrorOffset);
-
-NTKERNELAPI
-PFILE_OBJECT
-NTAPI
-IoCreateStreamFileObject(
-  _In_opt_ PFILE_OBJECT FileObject,
-  _In_opt_ PDEVICE_OBJECT DeviceObject);
-
-NTKERNELAPI
-PFILE_OBJECT
-NTAPI
-IoCreateStreamFileObjectLite(
-  _In_opt_ PFILE_OBJECT FileObject,
-  _In_opt_ PDEVICE_OBJECT DeviceObject);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-IoFastQueryNetworkAttributes(
-  _In_ POBJECT_ATTRIBUTES ObjectAttributes,
-  _In_ ACCESS_MASK DesiredAccess,
-  _In_ ULONG OpenOptions,
-  _Out_ PIO_STATUS_BLOCK IoStatus,
-  _Out_ PFILE_NETWORK_OPEN_INFORMATION Buffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoPageRead(
-  _In_ PFILE_OBJECT FileObject,
-  _In_ PMDL Mdl,
-  _In_ PLARGE_INTEGER Offset,
-  _In_ PKEVENT Event,
-  _Out_ PIO_STATUS_BLOCK IoStatusBlock);
-
-NTKERNELAPI
-PDEVICE_OBJECT
-NTAPI
-IoGetBaseFileSystemDeviceObject(
-  _In_ PFILE_OBJECT FileObject);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-PCONFIGURATION_INFORMATION
-NTAPI
-IoGetConfigurationInformation(VOID);
-
-NTKERNELAPI
-ULONG
-NTAPI
-IoGetRequestorProcessId(
-  _In_ PIRP Irp);
-
-NTKERNELAPI
-PEPROCESS
-NTAPI
-IoGetRequestorProcess(
-  _In_ PIRP Irp);
-
-NTKERNELAPI
-PIRP
-NTAPI
-IoGetTopLevelIrp(VOID);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-IoIsOperationSynchronous(
-  _In_ PIRP Irp);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-IoIsSystemThread(
-  _In_ PETHREAD Thread);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-IoIsValidNameGraftingBuffer(
-  _In_ PIRP Irp,
-  _In_ PREPARSE_DATA_BUFFER ReparseBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoQueryFileInformation(
-  _In_ PFILE_OBJECT FileObject,
-  _In_ FILE_INFORMATION_CLASS FileInformationClass,
-  _In_ ULONG Length,
-  _Out_ PVOID FileInformation,
-  _Out_ PULONG ReturnedLength);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoQueryVolumeInformation(
-  _In_ PFILE_OBJECT FileObject,
-  _In_ FS_INFORMATION_CLASS FsInformationClass,
-  _In_ ULONG Length,
-  _Out_ PVOID FsInformation,
-  _Out_ PULONG ReturnedLength);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoQueueThreadIrp(
-  _In_ PIRP Irp);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoRegisterFileSystem(
-  _In_ __drv_aliasesMem PDEVICE_OBJECT DeviceObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoRegisterFsRegistrationChange(
-  _In_ PDRIVER_OBJECT DriverObject,
-  _In_ PDRIVER_FS_NOTIFICATION DriverNotificationRoutine);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoReleaseVpbSpinLock(
-  _In_ KIRQL Irql);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoSetDeviceToVerify(
-  _In_ PETHREAD Thread,
-  _In_opt_ PDEVICE_OBJECT DeviceObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoSetInformation(
-  _In_ PFILE_OBJECT FileObject,
-  _In_ FILE_INFORMATION_CLASS FileInformationClass,
-  _In_ ULONG Length,
-  _In_ PVOID FileInformation);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoSetTopLevelIrp(
-  _In_opt_ PIRP Irp);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoSynchronousPageWrite(
-  _In_ PFILE_OBJECT FileObject,
-  _In_ PMDL Mdl,
-  _In_ PLARGE_INTEGER FileOffset,
-  _In_ PKEVENT Event,
-  _Out_ PIO_STATUS_BLOCK IoStatusBlock);
-
-NTKERNELAPI
-PEPROCESS
-NTAPI
-IoThreadToProcess(
-  _In_ PETHREAD Thread);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoUnregisterFileSystem(
-  _In_ PDEVICE_OBJECT DeviceObject);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoUnregisterFsRegistrationChange(
-  _In_ PDRIVER_OBJECT DriverObject,
-  _In_ PDRIVER_FS_NOTIFICATION DriverNotificationRoutine);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoVerifyVolume(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ BOOLEAN AllowRawMount);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoGetRequestorSessionId(
-  _In_ PIRP Irp,
-  _Out_ PULONG pSessionId);
-$endif (_NTIFS_)
-
-#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
-
-$if (_NTDDK_)
-#if (NTDDI_VERSION >= NTDDI_WIN2KSP3)
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-IoIsFileOriginRemote(
-  _In_ PFILE_OBJECT FileObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoSetFileOrigin(
-  _In_ PFILE_OBJECT FileObject,
-  _In_ BOOLEAN Remote);
-
-#endif /* (NTDDI_VERSION >= NTDDI_WIN2KSP3) */
-$endif (_NTDDK_)
-
-#if (NTDDI_VERSION >= NTDDI_WINXP)
-
-$if (_WDMDDK_)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCsqInitialize(
-  _Out_ PIO_CSQ Csq,
-  _In_ PIO_CSQ_INSERT_IRP CsqInsertIrp,
-  _In_ PIO_CSQ_REMOVE_IRP CsqRemoveIrp,
-  _In_ PIO_CSQ_PEEK_NEXT_IRP CsqPeekNextIrp,
-  _In_ PIO_CSQ_ACQUIRE_LOCK CsqAcquireLock,
-  _In_ PIO_CSQ_RELEASE_LOCK CsqReleaseLock,
-  _In_ PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoCsqInsertIrp(
-  _Inout_ PIO_CSQ Csq,
-  _Inout_ PIRP Irp,
-  _Out_opt_ PIO_CSQ_IRP_CONTEXT Context);
-
-NTKERNELAPI
-PIRP
-NTAPI
-IoCsqRemoveIrp(
-  _Inout_ PIO_CSQ Csq,
-  _Inout_ PIO_CSQ_IRP_CONTEXT Context);
-
-NTKERNELAPI
-PIRP
-NTAPI
-IoCsqRemoveNextIrp(
-  _Inout_ PIO_CSQ Csq,
-  _In_opt_ PVOID PeekContext);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-IoForwardIrpSynchronously(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ PIRP Irp);
-
-#define IoForwardAndCatchIrp IoForwardIrpSynchronously
-
-NTKERNELAPI
-VOID
-NTAPI
-IoFreeErrorLogEntry(
-  _In_ PVOID ElEntry);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-_Must_inspect_result_
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoSetCompletionRoutineEx(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ PIRP Irp,
-  _In_ PIO_COMPLETION_ROUTINE CompletionRoutine,
-  _In_opt_ PVOID Context,
-  _In_ BOOLEAN InvokeOnSuccess,
-  _In_ BOOLEAN InvokeOnError,
-  _In_ BOOLEAN InvokeOnCancel);
-
-VOID
-NTAPI
-IoSetStartIoAttributes(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ BOOLEAN DeferredStartIo,
-  _In_ BOOLEAN NonCancelable);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIDeviceObjectToInstanceName(
-  _In_ PVOID DataBlockObject,
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _Out_ PUNICODE_STRING InstanceName);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIExecuteMethod(
-  _In_ PVOID DataBlockObject,
-  _In_ PUNICODE_STRING InstanceName,
-  _In_ ULONG MethodId,
-  _In_ ULONG InBufferSize,
-  _Inout_ PULONG OutBufferSize,
-  _Inout_updates_bytes_to_opt_(*OutBufferSize, InBufferSize) PUCHAR InOutBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIHandleToInstanceName(
-  _In_ PVOID DataBlockObject,
-  _In_ HANDLE FileHandle,
-  _Out_ PUNICODE_STRING InstanceName);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIOpenBlock(
-  _In_ LPCGUID DataBlockGuid,
-  _In_ ULONG DesiredAccess,
-  _Out_ PVOID *DataBlockObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIQueryAllData(
-  _In_ PVOID DataBlockObject,
-  _Inout_ ULONG *InOutBufferSize,
-  _Out_writes_bytes_opt_(*InOutBufferSize) PVOID OutBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIQueryAllDataMultiple(
-  _In_reads_(ObjectCount) PVOID *DataBlockObjectList,
-  _In_ ULONG ObjectCount,
-  _Inout_ ULONG *InOutBufferSize,
-  _Out_writes_bytes_opt_(*InOutBufferSize) PVOID OutBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIQuerySingleInstance(
-  _In_ PVOID DataBlockObject,
-  _In_ PUNICODE_STRING InstanceName,
-  _Inout_ ULONG *InOutBufferSize,
-  _Out_writes_bytes_opt_(*InOutBufferSize) PVOID OutBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMISetNotificationCallback(
-  _Inout_ PVOID Object,
-  _In_ WMI_NOTIFICATION_CALLBACK Callback,
-  _In_opt_ PVOID Context);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMISetSingleInstance(
-  _In_ PVOID DataBlockObject,
-  _In_ PUNICODE_STRING InstanceName,
-  _In_ ULONG Version,
-  _In_ ULONG ValueBufferSize,
-  _In_reads_bytes_(ValueBufferSize) PVOID ValueBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMISetSingleItem(
-  _In_ PVOID DataBlockObject,
-  _In_ PUNICODE_STRING InstanceName,
-  _In_ ULONG DataItemId,
-  _In_ ULONG Version,
-  _In_ ULONG ValueBufferSize,
-  _In_reads_bytes_(ValueBufferSize) PVOID ValueBuffer);
-$endif (_WDMDDK_)
-$if (_NTDDK_)
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-NTSTATUS
-FASTCALL
-IoReadPartitionTable(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ ULONG SectorSize,
-  _In_ BOOLEAN ReturnRecognizedPartitions,
-  _Out_ struct _DRIVE_LAYOUT_INFORMATION **PartitionBuffer);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-NTSTATUS
-FASTCALL
-IoSetPartitionInformation(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ ULONG SectorSize,
-  _In_ ULONG PartitionNumber,
-  _In_ ULONG PartitionType);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-NTSTATUS
-FASTCALL
-IoWritePartitionTable(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ ULONG SectorSize,
-  _In_ ULONG SectorsPerTrack,
-  _In_ ULONG NumberOfHeads,
-  _In_ struct _DRIVE_LAYOUT_INFORMATION *PartitionBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCreateDisk(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_opt_ struct _CREATE_DISK* Disk);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoReadDiskSignature(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ ULONG BytesPerSector,
-  _Out_ PDISK_SIGNATURE Signature);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoReadPartitionTableEx(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _Out_ struct _DRIVE_LAYOUT_INFORMATION_EX **PartitionBuffer);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoSetPartitionInformationEx(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ ULONG PartitionNumber,
-  _In_ struct _SET_PARTITION_INFORMATION_EX *PartitionInfo);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoSetSystemPartition(
-  _In_ PUNICODE_STRING VolumeNameString);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoVerifyPartitionTable(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ BOOLEAN FixErrors);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoVolumeDeviceToDosName(
-  _In_ PVOID VolumeDeviceObject,
-  _Out_ _When_(return==0,
-    _At_(DosName->Buffer, __drv_allocatesMem(Mem)))
-    PUNICODE_STRING DosName);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWritePartitionTableEx(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_reads_(_Inexpressible_(FIELD_OFFSET(DRIVE_LAYOUT_INFORMATION_EX, PartitionEntry[0])))
-    struct _DRIVE_LAYOUT_INFORMATION_EX *DriveLayout);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCreateFileSpecifyDeviceObjectHint(
-  _Out_ PHANDLE FileHandle,
-  _In_ ACCESS_MASK DesiredAccess,
-  _In_ POBJECT_ATTRIBUTES ObjectAttributes,
-  _Out_ PIO_STATUS_BLOCK IoStatusBlock,
-  _In_opt_ PLARGE_INTEGER AllocationSize,
-  _In_ ULONG FileAttributes,
-  _In_ ULONG ShareAccess,
-  _In_ ULONG Disposition,
-  _In_ ULONG CreateOptions,
-  _In_opt_ PVOID EaBuffer,
-  _In_ ULONG EaLength,
-  _In_ CREATE_FILE_TYPE CreateFileType,
-  _In_opt_ PVOID InternalParameters,
-  _In_ ULONG Options,
-  _In_opt_ PVOID DeviceObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoAttachDeviceToDeviceStackSafe(
-  _In_ PDEVICE_OBJECT SourceDevice,
-  _In_ PDEVICE_OBJECT TargetDevice,
-  _Outptr_ PDEVICE_OBJECT *AttachedToDeviceObject);
-
-$endif (_NTDDK_)
-$if (_NTIFS_)
-
-NTKERNELAPI
-PFILE_OBJECT
-NTAPI
-IoCreateStreamFileObjectEx(
-  _In_opt_ PFILE_OBJECT FileObject,
-  _In_opt_ PDEVICE_OBJECT DeviceObject,
-  _Out_opt_ PHANDLE FileObjectHandle);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoQueryFileDosDeviceName(
-  _In_ PFILE_OBJECT FileObject,
-  _Out_ POBJECT_NAME_INFORMATION *ObjectNameInformation);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoEnumerateDeviceObjectList(
-  _In_ PDRIVER_OBJECT DriverObject,
-  _Out_writes_bytes_to_opt_(DeviceObjectListSize,(*ActualNumberDeviceObjects)*sizeof(PDEVICE_OBJECT))
-    PDEVICE_OBJECT *DeviceObjectList,
-  _In_ ULONG DeviceObjectListSize,
-  _Out_ PULONG ActualNumberDeviceObjects);
-
-NTKERNELAPI
-PDEVICE_OBJECT
-NTAPI
-IoGetLowerDeviceObject(
-  _In_ PDEVICE_OBJECT DeviceObject);
-
-NTKERNELAPI
-PDEVICE_OBJECT
-NTAPI
-IoGetDeviceAttachmentBaseRef(
-  _In_ PDEVICE_OBJECT DeviceObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoGetDiskDeviceObject(
-  _In_ PDEVICE_OBJECT FileSystemDeviceObject,
-  _Out_ PDEVICE_OBJECT *DiskDeviceObject);
-$endif (_NTIFS_)
-
-#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
-
-$if (_WDMDDK_)
-#if (NTDDI_VERSION >= NTDDI_WINXPSP1)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoValidateDeviceIoControlAccess(
-  _In_ PIRP Irp,
-  _In_ ULONG RequiredAccess);
-#endif
-
-$endif (_WDMDDK_)
-$if (_WDMDDK_ || _NTDDK_)
-#if (NTDDI_VERSION >= NTDDI_WS03)
-$endif (_WDMDDK_ || _NTDDK_)
-$if (_NTDDK_)
-NTKERNELAPI
-IO_PAGING_PRIORITY
-FASTCALL
-IoGetPagingIoPriority(
-  _In_ PIRP Irp);
-
-$endif (_NTDDK_)
-$if (_WDMDDK_)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCsqInitializeEx(
-  _Out_ PIO_CSQ Csq,
-  _In_ PIO_CSQ_INSERT_IRP_EX CsqInsertIrp,
-  _In_ PIO_CSQ_REMOVE_IRP CsqRemoveIrp,
-  _In_ PIO_CSQ_PEEK_NEXT_IRP CsqPeekNextIrp,
-  _In_ PIO_CSQ_ACQUIRE_LOCK CsqAcquireLock,
-  _In_ PIO_CSQ_RELEASE_LOCK CsqReleaseLock,
-  _In_ PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCsqInsertIrpEx(
-  _Inout_ PIO_CSQ Csq,
-  _Inout_ PIRP Irp,
-  _Out_opt_ PIO_CSQ_IRP_CONTEXT Context,
-  _In_opt_ PVOID InsertContext);
-$endif (_WDMDDK_)
-$if (_WDMDDK_ || _NTDDK_)
-#endif /* (NTDDI_VERSION >= NTDDI_WS03) */
-$endif (_WDMDDK_ || _NTDDK_)
-$if (_NTDDK_ || _NTIFS_)
-#if (NTDDI_VERSION >= NTDDI_WS03SP1)
-$endif (_NTDDK_ || _NTIFS_)
-
-$if (_NTDDK_)
-BOOLEAN
-NTAPI
-IoTranslateBusAddress(
-  _In_ INTERFACE_TYPE InterfaceType,
-  _In_ ULONG BusNumber,
-  _In_ PHYSICAL_ADDRESS BusAddress,
-  _Inout_ PULONG AddressSpace,
-  _Out_ PPHYSICAL_ADDRESS TranslatedAddress);
-$endif (_NTDDK_)
-$if (_NTIFS_)
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoEnumerateRegisteredFiltersList(
-  _Out_writes_bytes_to_opt_(DriverObjectListSize,(*ActualNumberDriverObjects)*sizeof(PDRIVER_OBJECT))
-    PDRIVER_OBJECT *DriverObjectList,
-  _In_ ULONG DriverObjectListSize,
-  _Out_ PULONG ActualNumberDriverObjects);
-$endif (_NTIFS_)
-$if (_NTDDK_ || _NTIFS_)
-#endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */
-$endif (_NTDDK_ || _NTIFS_)
-
-#if (NTDDI_VERSION >= NTDDI_VISTA)
-$if (_WDMDDK_)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoGetBootDiskInformationLite(
-  _Outptr_ PBOOTDISK_INFORMATION_LITE *BootDiskInformation);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCheckShareAccessEx(
-  _In_ ACCESS_MASK DesiredAccess,
-  _In_ ULONG DesiredShareAccess,
-  _Inout_ PFILE_OBJECT FileObject,
-  _Inout_ PSHARE_ACCESS ShareAccess,
-  _In_ BOOLEAN Update,
-  _In_ PBOOLEAN WritePermission);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoConnectInterruptEx(
-  _Inout_ PIO_CONNECT_INTERRUPT_PARAMETERS Parameters);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoDisconnectInterruptEx(
-  _In_ PIO_DISCONNECT_INTERRUPT_PARAMETERS Parameters);
-
-LOGICAL
-NTAPI
-IoWithinStackLimits(
-  _In_ ULONG_PTR RegionStart,
-  _In_ SIZE_T RegionSize);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoSetShareAccessEx(
-  _In_ ACCESS_MASK DesiredAccess,
-  _In_ ULONG DesiredShareAccess,
-  _Inout_ PFILE_OBJECT FileObject,
-  _Out_ PSHARE_ACCESS ShareAccess,
-  _In_ PBOOLEAN WritePermission);
-
-ULONG
-NTAPI
-IoSizeofWorkItem(VOID);
-
-VOID
-NTAPI
-IoInitializeWorkItem(
-  _In_ PVOID IoObject,
-  _Out_ PIO_WORKITEM IoWorkItem);
-
-VOID
-NTAPI
-IoUninitializeWorkItem(
-  _Inout_ PIO_WORKITEM IoWorkItem);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-VOID
-NTAPI
-IoQueueWorkItemEx(
-  _Inout_ PIO_WORKITEM IoWorkItem,
-  _In_ PIO_WORKITEM_ROUTINE_EX WorkerRoutine,
-  _In_ WORK_QUEUE_TYPE QueueType,
-  _In_opt_ __drv_aliasesMem PVOID Context);
-
-IO_PRIORITY_HINT
-NTAPI
-IoGetIoPriorityHint(
-  _In_ PIRP Irp);
-
-NTSTATUS
-NTAPI
-IoSetIoPriorityHint(
-  _In_ PIRP Irp,
-  _In_ IO_PRIORITY_HINT PriorityHint);
-
-NTSTATUS
-NTAPI
-IoAllocateSfioStreamIdentifier(
-  _In_ PFILE_OBJECT FileObject,
-  _In_ ULONG Length,
-  _In_ PVOID Signature,
-  _Out_ PVOID *StreamIdentifier);
-
-PVOID
-NTAPI
-IoGetSfioStreamIdentifier(
-  _In_ PFILE_OBJECT FileObject,
-  _In_ PVOID Signature);
-
-NTSTATUS
-NTAPI
-IoFreeSfioStreamIdentifier(
-  _In_ PFILE_OBJECT FileObject,
-  _In_ PVOID Signature);
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-_Must_inspect_result_
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoRequestDeviceEjectEx(
-  _In_ PDEVICE_OBJECT PhysicalDeviceObject,
-  _In_opt_ PIO_DEVICE_EJECT_CALLBACK Callback,
-  _In_opt_ PVOID Context,
-  _In_opt_ PDRIVER_OBJECT DriverObject);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-_Must_inspect_result_
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoSetDevicePropertyData(
-  _In_ PDEVICE_OBJECT Pdo,
-  _In_ CONST DEVPROPKEY *PropertyKey,
-  _In_ LCID Lcid,
-  _In_ ULONG Flags,
-  _In_ DEVPROPTYPE Type,
-  _In_ ULONG Size,
-  _In_opt_ PVOID Data);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-_Must_inspect_result_
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoGetDevicePropertyData(
-  _In_ PDEVICE_OBJECT Pdo,
-  _In_ CONST DEVPROPKEY *PropertyKey,
-  _In_ LCID Lcid,
-  _Reserved_ ULONG Flags,
-  _In_ ULONG Size,
-  _Out_ PVOID Data,
-  _Out_ PULONG RequiredSize,
-  _Out_ PDEVPROPTYPE Type);
-
-$endif (_WDMDDK_)
-$if (_NTDDK_)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoUpdateDiskGeometry(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ struct _DISK_GEOMETRY_EX* OldDiskGeometry,
-  _In_ struct _DISK_GEOMETRY_EX* NewDiskGeometry);
-
-PTXN_PARAMETER_BLOCK
-NTAPI
-IoGetTransactionParameterBlock(
-  _In_ PFILE_OBJECT FileObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCreateFileEx(
-  _Out_ PHANDLE FileHandle,
-  _In_ ACCESS_MASK DesiredAccess,
-  _In_ POBJECT_ATTRIBUTES ObjectAttributes,
-  _Out_ PIO_STATUS_BLOCK IoStatusBlock,
-  _In_opt_ PLARGE_INTEGER AllocationSize,
-  _In_ ULONG FileAttributes,
-  _In_ ULONG ShareAccess,
-  _In_ ULONG Disposition,
-  _In_ ULONG CreateOptions,
-  _In_opt_ PVOID EaBuffer,
-  _In_ ULONG EaLength,
-  _In_ CREATE_FILE_TYPE CreateFileType,
-  _In_opt_ PVOID InternalParameters,
-  _In_ ULONG Options,
-  _In_opt_ PIO_DRIVER_CREATE_CONTEXT DriverContext);
-
-NTSTATUS
-NTAPI
-IoSetIrpExtraCreateParameter(
-  _Inout_ PIRP Irp,
-  _In_ struct _ECP_LIST *ExtraCreateParameter);
-
-VOID
-NTAPI
-IoClearIrpExtraCreateParameter(
-  _Inout_ PIRP Irp);
-
-NTSTATUS
-NTAPI
-IoGetIrpExtraCreateParameter(
-  _In_ PIRP Irp,
-  _Outptr_result_maybenull_ struct _ECP_LIST **ExtraCreateParameter);
-
-BOOLEAN
-NTAPI
-IoIsFileObjectIgnoringSharing(
-  _In_ PFILE_OBJECT FileObject);
-
-$endif (_NTDDK_)
-$if (_NTIFS_)
-
-FORCEINLINE
-VOID
-NTAPI
-IoInitializePriorityInfo(
-    _In_ PIO_PRIORITY_INFO PriorityInfo)
-{
-    PriorityInfo->Size = sizeof(IO_PRIORITY_INFO);
-    PriorityInfo->ThreadPriority = 0xffff;
-    PriorityInfo->IoPriority = IoPriorityNormal;
-    PriorityInfo->PagePriority = 0;
-}
-$endif (_NTIFS_)
-#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
-
-$if (_WDMDDK_)
-#define IoCallDriverStackSafeDefault(a, b) IoCallDriver(a, b)
-
-#if (NTDDI_VERSION >= NTDDI_WS08)
-_IRQL_requires_max_(PASSIVE_LEVEL)
-_Must_inspect_result_
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoReplacePartitionUnit(
-  _In_ PDEVICE_OBJECT TargetPdo,
-  _In_ PDEVICE_OBJECT SparePdo,
-  _In_ ULONG Flags);
-#endif
-
-$endif (_WDMDDK_)
-#if (NTDDI_VERSION >= NTDDI_WIN7)
-
-$if (_WDMDDK_)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoGetAffinityInterrupt(
-  _In_ PKINTERRUPT InterruptObject,
-  _Out_ PGROUP_AFFINITY GroupAffinity);
-
-NTSTATUS
-NTAPI
-IoGetContainerInformation(
-  _In_ IO_CONTAINER_INFORMATION_CLASS InformationClass,
-  _In_opt_ PVOID ContainerObject,
-  _Inout_updates_bytes_opt_(BufferLength) PVOID Buffer,
-  _In_ ULONG BufferLength);
-
-NTSTATUS
-NTAPI
-IoRegisterContainerNotification(
-  _In_ IO_CONTAINER_NOTIFICATION_CLASS NotificationClass,
-  _In_ PIO_CONTAINER_NOTIFICATION_FUNCTION CallbackFunction,
-  _In_reads_bytes_opt_(NotificationInformationLength) PVOID NotificationInformation,
-  _In_ ULONG NotificationInformationLength,
-  _Out_ PVOID CallbackRegistration);
-
-VOID
-NTAPI
-IoUnregisterContainerNotification(
-  _In_ PVOID CallbackRegistration);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-__drv_freesMem(Pool)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoUnregisterPlugPlayNotificationEx(
-  _In_ PVOID NotificationEntry);
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-_Must_inspect_result_
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoGetDeviceNumaNode(
-  _In_ PDEVICE_OBJECT Pdo,
-  _Out_ PUSHORT NodeNumber);
-
-$endif (_WDMDDK_)
-$if (_NTDDK_)
-NTSTATUS
-NTAPI
-IoSetFileObjectIgnoreSharing(
-  _In_ PFILE_OBJECT FileObject);
-
-$endif (_NTDDK_)
-$if (_NTIFS_)
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoRegisterFsRegistrationChangeMountAware(
-  _In_ PDRIVER_OBJECT DriverObject,
-  _In_ PDRIVER_FS_NOTIFICATION DriverNotificationRoutine,
-  _In_ BOOLEAN SynchronizeWithMounts);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoReplaceFileObjectName(
-  _In_ PFILE_OBJECT FileObject,
-  _In_reads_bytes_(FileNameLength) PWSTR NewFileName,
-  _In_ USHORT FileNameLength);
-$endif (_NTIFS_)
-#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
-
-$if (_WDMDDK_)
-#if defined(_WIN64)
-NTKERNELAPI
-ULONG
-NTAPI
-IoWMIDeviceObjectToProviderId(
-  _In_ PDEVICE_OBJECT DeviceObject);
-#else
-#define IoWMIDeviceObjectToProviderId(DeviceObject) ((ULONG)(DeviceObject))
-#endif
-
-/*
- * USHORT
- * IoSizeOfIrp(
- *   IN CCHAR  StackSize)
- */
-#define IoSizeOfIrp(_StackSize) \
-  ((USHORT) (sizeof(IRP) + ((_StackSize) * (sizeof(IO_STACK_LOCATION)))))
-
-FORCEINLINE
-VOID
-IoSkipCurrentIrpStackLocation(
-  _Inout_ PIRP Irp)
-{
-  ASSERT(Irp->CurrentLocation <= Irp->StackCount);
-  Irp->CurrentLocation++;
-#ifdef NONAMELESSUNION
-  Irp->Tail.Overlay.s.u.CurrentStackLocation++;
-#else
-  Irp->Tail.Overlay.CurrentStackLocation++;
-#endif
-}
-
-FORCEINLINE
-VOID
-IoSetNextIrpStackLocation(
-  _Inout_ PIRP Irp)
-{
-  ASSERT(Irp->CurrentLocation > 0);
-  Irp->CurrentLocation--;
-#ifdef NONAMELESSUNION
-  Irp->Tail.Overlay.s.u.CurrentStackLocation--;
-#else
-  Irp->Tail.Overlay.CurrentStackLocation--;
-#endif
-}
-
-__drv_aliasesMem
-FORCEINLINE
-PIO_STACK_LOCATION
-IoGetNextIrpStackLocation(
-  _In_ PIRP Irp)
-{
-  ASSERT(Irp->CurrentLocation > 0);
-#ifdef NONAMELESSUNION
-  return ((Irp)->Tail.Overlay.s.u.CurrentStackLocation - 1 );
-#else
-  return ((Irp)->Tail.Overlay.CurrentStackLocation - 1 );
-#endif
-}
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-FORCEINLINE
-VOID
-IoSetCompletionRoutine(
-  _In_ PIRP Irp,
-  _In_opt_ PIO_COMPLETION_ROUTINE CompletionRoutine,
-  _In_opt_ __drv_aliasesMem PVOID Context,
-  _In_ BOOLEAN InvokeOnSuccess,
-  _In_ BOOLEAN InvokeOnError,
-  _In_ BOOLEAN InvokeOnCancel)
-{
-  PIO_STACK_LOCATION irpSp;
-  ASSERT( (InvokeOnSuccess || InvokeOnError || InvokeOnCancel) ? (CompletionRoutine != NULL) : TRUE );
-  irpSp = IoGetNextIrpStackLocation(Irp);
-  irpSp->CompletionRoutine = CompletionRoutine;
-  irpSp->Context = Context;
-  irpSp->Control = 0;
-
-  if (InvokeOnSuccess) {
-    irpSp->Control = SL_INVOKE_ON_SUCCESS;
-  }
-
-  if (InvokeOnError) {
-    irpSp->Control |= SL_INVOKE_ON_ERROR;
-  }
-
-  if (InvokeOnCancel) {
-    irpSp->Control |= SL_INVOKE_ON_CANCEL;
-  }
-}
-
-_IRQL_requires_max_(DISPATCH_LEVEL)
-_Ret_maybenull_
-FORCEINLINE
-PDRIVER_CANCEL
-IoSetCancelRoutine(
-    _Inout_ PIRP Irp,
-    _In_opt_ PDRIVER_CANCEL CancelRoutine)
-{
-    return (PDRIVER_CANCEL)(ULONG_PTR) InterlockedExchangePointer((PVOID *)&(Irp)->CancelRoutine, (PVOID)(ULONG_PTR)(CancelRoutine));
-}
-
-FORCEINLINE
-VOID
-IoRequestDpc(
-    _Inout_ PDEVICE_OBJECT DeviceObject,
-    _In_opt_ PIRP Irp,
-    _In_opt_ __drv_aliasesMem PVOID Context)
-{
-    KeInsertQueueDpc(&DeviceObject->Dpc, Irp, Context);
-}
-
-/*
- * VOID
- * IoReleaseRemoveLock(
- *   IN PIO_REMOVE_LOCK  RemoveLock,
- *   IN PVOID  Tag)
- */
-#define IoReleaseRemoveLock(_RemoveLock, \
-                            _Tag) \
-  IoReleaseRemoveLockEx(_RemoveLock, _Tag, sizeof(IO_REMOVE_LOCK))
-
-/*
- * VOID
- * IoReleaseRemoveLockAndWait(
- *   IN PIO_REMOVE_LOCK  RemoveLock,
- *   IN PVOID  Tag)
- */
-#define IoReleaseRemoveLockAndWait(_RemoveLock, \
-                                   _Tag) \
-  IoReleaseRemoveLockAndWaitEx(_RemoveLock, _Tag, sizeof(IO_REMOVE_LOCK))
-
-#if defined(_WIN64)
-_IRQL_requires_max_(DISPATCH_LEVEL)
-NTKERNELAPI
-BOOLEAN
-IoIs32bitProcess(
-  _In_opt_ PIRP Irp);
-#endif
-
-#define PLUGPLAY_REGKEY_DEVICE                            1
-#define PLUGPLAY_REGKEY_DRIVER                            2
-#define PLUGPLAY_REGKEY_CURRENT_HWPROFILE                 4
-
-__drv_aliasesMem
-FORCEINLINE
-PIO_STACK_LOCATION
-IoGetCurrentIrpStackLocation(
-  _In_ PIRP Irp)
-{
-  ASSERT(Irp->CurrentLocation <= Irp->StackCount + 1);
-#ifdef NONAMELESSUNION
-  return Irp->Tail.Overlay.s.u.CurrentStackLocation;
-#else
-  return Irp->Tail.Overlay.CurrentStackLocation;
-#endif
-}
-
-FORCEINLINE
-VOID
-IoMarkIrpPending(
-  _Inout_ PIRP Irp)
-{
-    IoGetCurrentIrpStackLocation((Irp))->Control |= SL_PENDING_RETURNED;
-}
-
-/*
- * BOOLEAN
- * IoIsErrorUserInduced(
- *   IN NTSTATUS  Status);
- */
-#define IoIsErrorUserInduced(Status) \
-   ((BOOLEAN)(((Status) == STATUS_DEVICE_NOT_READY) || \
-   ((Status) == STATUS_IO_TIMEOUT) || \
-   ((Status) == STATUS_MEDIA_WRITE_PROTECTED) || \
-   ((Status) == STATUS_NO_MEDIA_IN_DEVICE) || \
-   ((Status) == STATUS_VERIFY_REQUIRED) || \
-   ((Status) == STATUS_UNRECOGNIZED_MEDIA) || \
-   ((Status) == STATUS_WRONG_VOLUME)))
-
-/* VOID
- * IoInitializeRemoveLock(
- *   IN PIO_REMOVE_LOCK  Lock,
- *   IN ULONG  AllocateTag,
- *   IN ULONG  MaxLockedMinutes,
- *   IN ULONG  HighWatermark)
- */
-#define IoInitializeRemoveLock( \
-  Lock, AllocateTag, MaxLockedMinutes, HighWatermark) \
-  IoInitializeRemoveLockEx(Lock, AllocateTag, MaxLockedMinutes, \
-    HighWatermark, sizeof(IO_REMOVE_LOCK))
-
-FORCEINLINE
-VOID
-IoInitializeDpcRequest(
-  _In_ PDEVICE_OBJECT DeviceObject,
-  _In_ PIO_DPC_ROUTINE DpcRoutine)
-{
-#ifdef _MSC_VER
-#pragma warning(push)
-#pragma warning(disable:28024)
-#endif
-  KeInitializeDpc(&DeviceObject->Dpc,
-                  (PKDEFERRED_ROUTINE) DpcRoutine,
-                  DeviceObject);
-#ifdef _MSC_VER
-#pragma warning(pop)
-#endif
-}
-
-#define DEVICE_INTERFACE_INCLUDE_NONACTIVE 0x00000001
-
-/*
- * ULONG
- * IoGetFunctionCodeFromCtlCode(
- *   IN ULONG  ControlCode)
- */
-#define IoGetFunctionCodeFromCtlCode(_ControlCode) \
-  (((_ControlCode) >> 2) & 0x00000FFF)
-
-FORCEINLINE
-VOID
-IoCopyCurrentIrpStackLocationToNext(
-    _Inout_ PIRP Irp)
-{
-    PIO_STACK_LOCATION irpSp;
-    PIO_STACK_LOCATION nextIrpSp;
-    irpSp = IoGetCurrentIrpStackLocation(Irp);
-    nextIrpSp = IoGetNextIrpStackLocation(Irp);
-    RtlCopyMemory(nextIrpSp, irpSp, FIELD_OFFSET(IO_STACK_LOCATION, CompletionRoutine));
-    nextIrpSp->Control = 0;
-}
-
-_IRQL_requires_max_(APC_LEVEL)
-NTKERNELAPI
-VOID
-NTAPI
-IoGetStackLimits(
-  _Out_ PULONG_PTR LowLimit,
-  _Out_ PULONG_PTR HighLimit);
-
-_IRQL_requires_max_(APC_LEVEL)
-FORCEINLINE
-ULONG_PTR
-IoGetRemainingStackSize(VOID)
-{
-    ULONG_PTR End, Begin;
-    ULONG_PTR Result;
-
-    IoGetStackLimits(&Begin, &End);
-    Result = (ULONG_PTR)(&End) - Begin;
-    return Result;
-}
-
-#if (NTDDI_VERSION >= NTDDI_WS03)
-FORCEINLINE
-VOID
-IoInitializeThreadedDpcRequest(
-    _In_ PDEVICE_OBJECT DeviceObject,
-    _In_ PIO_DPC_ROUTINE DpcRoutine)
-{
-#ifdef _MSC_VER
-#pragma warning(push)
-#pragma warning(disable:28024)
-#pragma warning(disable:28128)
-#endif
-    KeInitializeThreadedDpc(&DeviceObject->Dpc,
-                            (PKDEFERRED_ROUTINE) DpcRoutine,
-                            DeviceObject );
-#ifdef _MSC_VER
-#pragma warning(pop)
-#endif
-}
-#endif
-
-$endif (_WDMDDK_)