* 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
VOID
NTAPI
WRITE_REGISTER_BUFFER_ULONG(
- IN PULONG Register,
- IN PULONG Buffer,
- IN ULONG Count);
+ IN PULONG Register,
+ IN PULONG Buffer,
+ IN ULONG Count);
NTKERNELAPI
VOID
VOID
NTAPI
WRITE_REGISTER_USHORT(
- IN PUSHORT Register,
- IN USHORT Value);
+ IN PUSHORT Register,
+ IN USHORT Value);
#else
IN PUCHAR Buffer,
IN ULONG Count)
{
- __inbytestring((USHORT)(ULONG_PTR)Port, Buffer, Count);
+ __inbytestring((USHORT)(ULONG_PTR)Port, Buffer, Count);
}
FORCEINLINE
VOID
READ_PORT_BUFFER_ULONG(
- IN PULONG Port,
- IN PULONG Buffer,
- IN ULONG Count)
+ IN PULONG Port,
+ IN PULONG Buffer,
+ IN ULONG Count)
{
- __indwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count);
+ __indwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count);
}
FORCEINLINE
IN PUSHORT Buffer,
IN ULONG Count)
{
- __inwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count);
+ __inwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count);
}
FORCEINLINE
READ_PORT_UCHAR(
IN PUCHAR Port)
{
- return __inbyte((USHORT)(ULONG_PTR)Port);
+ return __inbyte((USHORT)(ULONG_PTR)Port);
}
FORCEINLINE
READ_PORT_ULONG(
IN PULONG Port)
{
- return __indword((USHORT)(ULONG_PTR)Port);
+ return __indword((USHORT)(ULONG_PTR)Port);
}
FORCEINLINE
READ_PORT_USHORT(
IN PUSHORT Port)
{
- return __inword((USHORT)(ULONG_PTR)Port);
+ return __inword((USHORT)(ULONG_PTR)Port);
}
FORCEINLINE
IN PUCHAR Buffer,
IN ULONG Count)
{
- __movsb(Register, Buffer, Count);
+ __movsb(Register, Buffer, Count);
}
FORCEINLINE
VOID
READ_REGISTER_BUFFER_ULONG(
- IN PULONG Register,
- IN PULONG Buffer,
- IN ULONG Count)
+ IN PULONG Register,
+ IN PULONG Buffer,
+ IN ULONG Count)
{
- __movsd(Register, Buffer, Count);
+ __movsd(Register, Buffer, Count);
}
FORCEINLINE
VOID
READ_REGISTER_BUFFER_USHORT(
- IN PUSHORT Register,
- IN PUSHORT Buffer,
- IN ULONG Count)
+ IN PUSHORT Register,
+ IN PUSHORT Buffer,
+ IN ULONG Count)
{
- __movsw(Register, Buffer, Count);
+ __movsw(Register, Buffer, Count);
}
FORCEINLINE
READ_REGISTER_UCHAR(
IN volatile UCHAR *Register)
{
- return *Register;
+ return *Register;
}
FORCEINLINE
READ_REGISTER_ULONG(
IN volatile ULONG *Register)
{
- return *Register;
+ return *Register;
}
FORCEINLINE
READ_REGISTER_USHORT(
IN volatile USHORT *Register)
{
- return *Register;
+ return *Register;
}
FORCEINLINE
IN PUCHAR Buffer,
IN ULONG Count)
{
- __outbytestring((USHORT)(ULONG_PTR)Port, Buffer, Count);
+ __outbytestring((USHORT)(ULONG_PTR)Port, Buffer, Count);
}
FORCEINLINE
IN PULONG Buffer,
IN ULONG Count)
{
- __outdwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count);
+ __outdwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count);
}
FORCEINLINE
IN PUSHORT Buffer,
IN ULONG Count)
{
- __outwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count);
+ __outwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count);
}
FORCEINLINE
IN PUCHAR Port,
IN UCHAR Value)
{
- __outbyte((USHORT)(ULONG_PTR)Port, Value);
+ __outbyte((USHORT)(ULONG_PTR)Port, Value);
}
FORCEINLINE
IN PULONG Port,
IN ULONG Value)
{
- __outdword((USHORT)(ULONG_PTR)Port, Value);
+ __outdword((USHORT)(ULONG_PTR)Port, Value);
}
FORCEINLINE
IN PUSHORT Port,
IN USHORT Value)
{
- __outword((USHORT)(ULONG_PTR)Port, Value);
+ __outword((USHORT)(ULONG_PTR)Port, Value);
}
FORCEINLINE
IN PUCHAR Buffer,
IN ULONG Count)
{
- LONG Synch;
- __movsb(Register, Buffer, Count);
- InterlockedOr(&Synch, 1);
+ LONG Synch;
+ __movsb(Register, Buffer, Count);
+ InterlockedOr(&Synch, 1);
}
FORCEINLINE
IN PULONG Buffer,
IN ULONG Count)
{
- LONG Synch;
- __movsd(Register, Buffer, Count);
- InterlockedOr(&Synch, 1);
+ LONG Synch;
+ __movsd(Register, Buffer, Count);
+ InterlockedOr(&Synch, 1);
}
FORCEINLINE
IN PUSHORT Buffer,
IN ULONG Count)
{
- LONG Synch;
- __movsw(Register, Buffer, Count);
- InterlockedOr(&Synch, 1);
+ LONG Synch;
+ __movsw(Register, Buffer, Count);
+ InterlockedOr(&Synch, 1);
}
FORCEINLINE
IN volatile UCHAR *Register,
IN UCHAR Value)
{
- LONG Synch;
- *Register = Value;
- InterlockedOr(&Synch, 1);
+ LONG Synch;
+ *Register = Value;
+ InterlockedOr(&Synch, 1);
}
FORCEINLINE
IN volatile ULONG *Register,
IN ULONG Value)
{
- LONG Synch;
- *Register = Value;
- InterlockedOr(&Synch, 1);
+ LONG Synch;
+ *Register = Value;
+ InterlockedOr(&Synch, 1);
}
FORCEINLINE
IN volatile USHORT *Register,
IN USHORT Value)
{
- LONG Sync;
- *Register = Value;
- InterlockedOr(&Sync, 1);
+ LONG Sync;
+ *Register = Value;
+ InterlockedOr(&Sync, 1);
}
#endif
FORCEINLINE
NTSTATUS
IoAllocateAdapterChannel(
- IN PDMA_ADAPTER DmaAdapter,
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG NumberOfMapRegisters,
- IN PDRIVER_CONTROL ExecutionRoutine,
- IN PVOID Context)
+ 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 );
+ 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)
+ 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);
+ 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)
+ IN PDMA_ADAPTER DmaAdapter)
{
- PFREE_ADAPTER_CHANNEL FreeAdapterChannel;
- FreeAdapterChannel = *(DmaAdapter)->DmaOperations->FreeAdapterChannel;
- ASSERT(FreeAdapterChannel);
- FreeAdapterChannel(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)
+ IN PDMA_ADAPTER DmaAdapter,
+ IN PVOID MapRegisterBase,
+ IN ULONG NumberOfMapRegisters)
{
- PFREE_MAP_REGISTERS FreeMapRegisters;
- FreeMapRegisters = *(DmaAdapter)->DmaOperations->FreeMapRegisters;
- ASSERT(FreeMapRegisters);
- FreeMapRegisters(DmaAdapter, MapRegisterBase, 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,
- IN OUT PULONG Length,
- IN BOOLEAN WriteToDevice)
+ IN PDMA_ADAPTER DmaAdapter,
+ IN PMDL Mdl,
+ IN PVOID MapRegisterBase,
+ IN PVOID CurrentVa,
+ IN OUT PULONG Length,
+ IN BOOLEAN WriteToDevice)
{
- PMAP_TRANSFER MapTransfer;
-
- MapTransfer = *(DmaAdapter)->DmaOperations->MapTransfer;
- ASSERT(MapTransfer);
- return MapTransfer(DmaAdapter,
- Mdl,
- MapRegisterBase,
- CurrentVa,
- Length,
- WriteToDevice);
+ PMAP_TRANSFER MapTransfer;
+
+ MapTransfer = *(DmaAdapter)->DmaOperations->MapTransfer;
+ ASSERT(MapTransfer);
+ return MapTransfer(DmaAdapter,
+ Mdl,
+ MapRegisterBase,
+ CurrentVa,
+ Length,
+ WriteToDevice);
}
#endif
-#if (NTDDI_VERSION >= NTDDI_WIN2K)
-NTKERNELAPI
-VOID
-NTAPI
-IoAcquireCancelSpinLock(
- OUT PKIRQL Irql);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoAcquireRemoveLockEx(
- IN PIO_REMOVE_LOCK RemoveLock,
- IN PVOID Tag OPTIONAL,
- IN PCSTR File,
- IN ULONG Line,
- IN ULONG RemlockSize);
-#endif
-
+$endif (_WDMDDK_)
+$if (_NTDDK_)
/*
- * NTSTATUS
- * IoAcquireRemoveLock(
- * IN PIO_REMOVE_LOCK RemoveLock,
- * IN OPTIONAL PVOID Tag)
+ * VOID IoAssignArcName(
+ * IN PUNICODE_STRING ArcName,
+ * IN PUNICODE_STRING DeviceName);
*/
-#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
+#define IoAssignArcName(_ArcName, _DeviceName) ( \
+ IoCreateSymbolicLink((_ArcName), (_DeviceName)))
/*
* VOID
- * IoAdjustPagingPathCount(
- * IN PLONG Count,
- * IN BOOLEAN Increment)
+ * IoDeassignArcName(
+ * IN PUNICODE_STRING ArcName)
*/
-#define IoAdjustPagingPathCount(_Count, \
- _Increment) \
-{ \
- if (_Increment) \
- { \
- InterlockedIncrement(_Count); \
- } \
- else \
- { \
- InterlockedDecrement(_Count); \
- } \
+#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_)
+NTKERNELAPI
+VOID
+NTAPI
+IoAcquireCancelSpinLock(
+ OUT PKIRQL Irql);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoAcquireRemoveLockEx(
+ IN PIO_REMOVE_LOCK RemoveLock,
+ IN PVOID Tag OPTIONAL,
+ IN PCSTR File,
+ IN ULONG Line,
+ IN ULONG RemlockSize);
NTKERNELAPI
NTSTATUS
NTAPI
IoAllocateDriverObjectExtension(
- IN PDRIVER_OBJECT DriverObject,
- IN PVOID ClientIdentificationAddress,
- IN ULONG DriverObjectExtensionSize,
- OUT PVOID *DriverObjectExtension);
+ IN PDRIVER_OBJECT DriverObject,
+ IN PVOID ClientIdentificationAddress,
+ IN ULONG DriverObjectExtensionSize,
+ OUT PVOID *DriverObjectExtension);
NTKERNELAPI
PVOID
NTAPI
IoAllocateErrorLogEntry(
- IN PVOID IoObject,
- IN UCHAR EntrySize);
+ IN PVOID IoObject,
+ IN UCHAR EntrySize);
NTKERNELAPI
PIRP
NTAPI
IoAllocateIrp(
- IN CCHAR StackSize,
- IN BOOLEAN ChargeQuota);
+ IN CCHAR StackSize,
+ IN BOOLEAN ChargeQuota);
NTKERNELAPI
PMDL
NTAPI
IoAllocateMdl(
- IN PVOID VirtualAddress OPTIONAL,
- IN ULONG Length,
- IN BOOLEAN SecondaryBuffer,
- IN BOOLEAN ChargeQuota,
- IN OUT PIRP Irp OPTIONAL);
+ IN PVOID VirtualAddress OPTIONAL,
+ IN ULONG Length,
+ IN BOOLEAN SecondaryBuffer,
+ IN BOOLEAN ChargeQuota,
+ IN OUT PIRP Irp OPTIONAL);
NTKERNELAPI
PIO_WORKITEM
NTAPI
IoAllocateWorkItem(
- IN PDEVICE_OBJECT DeviceObject);
+ IN PDEVICE_OBJECT DeviceObject);
NTKERNELAPI
NTSTATUS
NTAPI
IoAttachDevice(
- IN PDEVICE_OBJECT SourceDevice,
- IN PUNICODE_STRING TargetDevice,
- OUT PDEVICE_OBJECT *AttachedDevice);
+ IN PDEVICE_OBJECT SourceDevice,
+ IN PUNICODE_STRING TargetDevice,
+ OUT PDEVICE_OBJECT *AttachedDevice);
NTKERNELAPI
PDEVICE_OBJECT
NTAPI
IoAttachDeviceToDeviceStack(
- IN PDEVICE_OBJECT SourceDevice,
- IN PDEVICE_OBJECT TargetDevice);
+ IN PDEVICE_OBJECT SourceDevice,
+ IN PDEVICE_OBJECT TargetDevice);
NTKERNELAPI
PIRP
NTAPI
IoBuildAsynchronousFsdRequest(
- IN ULONG MajorFunction,
- IN PDEVICE_OBJECT DeviceObject,
- IN OUT PVOID Buffer OPTIONAL,
- IN ULONG Length OPTIONAL,
- IN PLARGE_INTEGER StartingOffset OPTIONAL,
- IN PIO_STATUS_BLOCK IoStatusBlock OPTIONAL);
+ IN ULONG MajorFunction,
+ IN PDEVICE_OBJECT DeviceObject,
+ IN OUT PVOID Buffer OPTIONAL,
+ IN ULONG Length OPTIONAL,
+ IN PLARGE_INTEGER StartingOffset OPTIONAL,
+ IN PIO_STATUS_BLOCK IoStatusBlock OPTIONAL);
NTKERNELAPI
PIRP
NTAPI
IoBuildDeviceIoControlRequest(
- IN ULONG IoControlCode,
- IN PDEVICE_OBJECT DeviceObject,
- IN PVOID InputBuffer OPTIONAL,
- IN ULONG InputBufferLength,
- OUT PVOID OutputBuffer OPTIONAL,
- IN ULONG OutputBufferLength,
- IN BOOLEAN InternalDeviceIoControl,
- IN PKEVENT Event,
- OUT PIO_STATUS_BLOCK IoStatusBlock);
+ IN ULONG IoControlCode,
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PVOID InputBuffer OPTIONAL,
+ IN ULONG InputBufferLength,
+ OUT PVOID OutputBuffer OPTIONAL,
+ IN ULONG OutputBufferLength,
+ IN BOOLEAN InternalDeviceIoControl,
+ IN PKEVENT Event,
+ OUT PIO_STATUS_BLOCK IoStatusBlock);
NTKERNELAPI
VOID
NTAPI
IoBuildPartialMdl(
- IN PMDL SourceMdl,
- IN OUT PMDL TargetMdl,
- IN PVOID VirtualAddress,
- IN ULONG Length);
+ IN PMDL SourceMdl,
+ IN OUT PMDL TargetMdl,
+ IN PVOID VirtualAddress,
+ IN ULONG Length);
NTKERNELAPI
PIRP
NTAPI
IoBuildSynchronousFsdRequest(
- IN ULONG MajorFunction,
- IN PDEVICE_OBJECT DeviceObject,
- IN OUT PVOID Buffer OPTIONAL,
- IN ULONG Length OPTIONAL,
- IN PLARGE_INTEGER StartingOffset OPTIONAL,
- IN PKEVENT Event,
- OUT PIO_STATUS_BLOCK IoStatusBlock);
+ IN ULONG MajorFunction,
+ IN PDEVICE_OBJECT DeviceObject,
+ IN OUT PVOID Buffer OPTIONAL,
+ IN ULONG Length OPTIONAL,
+ IN PLARGE_INTEGER StartingOffset OPTIONAL,
+ IN PKEVENT Event,
+ OUT PIO_STATUS_BLOCK IoStatusBlock);
NTKERNELAPI
NTSTATUS
FASTCALL
IofCallDriver(
- IN PDEVICE_OBJECT DeviceObject,
- IN OUT PIRP Irp);
+ IN PDEVICE_OBJECT DeviceObject,
+ IN OUT PIRP Irp);
#define IoCallDriver IofCallDriver
NTKERNELAPI
BOOLEAN
NTAPI
IoCancelIrp(
- IN PIRP Irp);
+ IN PIRP Irp);
NTKERNELAPI
NTSTATUS
NTAPI
IoCheckShareAccess(
- IN ACCESS_MASK DesiredAccess,
- IN ULONG DesiredShareAccess,
- IN OUT PFILE_OBJECT FileObject,
- IN OUT PSHARE_ACCESS ShareAccess,
- IN BOOLEAN Update);
+ IN ACCESS_MASK DesiredAccess,
+ IN ULONG DesiredShareAccess,
+ IN OUT PFILE_OBJECT FileObject,
+ IN OUT PSHARE_ACCESS ShareAccess,
+ IN BOOLEAN Update);
NTKERNELAPI
VOID
FASTCALL
IofCompleteRequest(
- IN PIRP Irp,
- IN CCHAR PriorityBoost);
+ IN PIRP Irp,
+ IN CCHAR PriorityBoost);
NTKERNELAPI
NTSTATUS
NTAPI
IoConnectInterrupt(
- OUT PKINTERRUPT *InterruptObject,
- IN PKSERVICE_ROUTINE ServiceRoutine,
- IN PVOID ServiceContext OPTIONAL,
- IN PKSPIN_LOCK SpinLock OPTIONAL,
- IN ULONG Vector,
- IN KIRQL Irql,
- IN KIRQL SynchronizeIrql,
- IN KINTERRUPT_MODE InterruptMode,
- IN BOOLEAN ShareVector,
- IN KAFFINITY ProcessorEnableMask,
- IN BOOLEAN FloatingSave);
+ OUT PKINTERRUPT *InterruptObject,
+ IN PKSERVICE_ROUTINE ServiceRoutine,
+ IN PVOID ServiceContext OPTIONAL,
+ IN PKSPIN_LOCK SpinLock OPTIONAL,
+ IN ULONG Vector,
+ IN KIRQL Irql,
+ IN KIRQL SynchronizeIrql,
+ IN KINTERRUPT_MODE InterruptMode,
+ IN BOOLEAN ShareVector,
+ IN KAFFINITY ProcessorEnableMask,
+ IN BOOLEAN FloatingSave);
NTKERNELAPI
NTSTATUS
NTAPI
IoCreateDevice(
- IN PDRIVER_OBJECT DriverObject,
- IN ULONG DeviceExtensionSize,
- IN PUNICODE_STRING DeviceName OPTIONAL,
- IN DEVICE_TYPE DeviceType,
- IN ULONG DeviceCharacteristics,
- IN BOOLEAN Exclusive,
- OUT PDEVICE_OBJECT *DeviceObject);
+ IN PDRIVER_OBJECT DriverObject,
+ IN ULONG DeviceExtensionSize,
+ IN PUNICODE_STRING DeviceName OPTIONAL,
+ IN DEVICE_TYPE DeviceType,
+ IN ULONG DeviceCharacteristics,
+ IN BOOLEAN Exclusive,
+ OUT PDEVICE_OBJECT *DeviceObject);
NTKERNELAPI
NTSTATUS
PKEVENT
NTAPI
IoCreateNotificationEvent(
- IN PUNICODE_STRING EventName,
- OUT PHANDLE EventHandle);
+ IN PUNICODE_STRING EventName,
+ OUT PHANDLE EventHandle);
NTKERNELAPI
NTSTATUS
NTAPI
IoCreateSymbolicLink(
- IN PUNICODE_STRING SymbolicLinkName,
- IN PUNICODE_STRING DeviceName);
+ IN PUNICODE_STRING SymbolicLinkName,
+ IN PUNICODE_STRING DeviceName);
NTKERNELAPI
PKEVENT
NTAPI
IoCreateSynchronizationEvent(
- IN PUNICODE_STRING EventName,
- OUT PHANDLE EventHandle);
+ IN PUNICODE_STRING EventName,
+ OUT PHANDLE EventHandle);
NTKERNELAPI
NTSTATUS
NTAPI
IoCreateUnprotectedSymbolicLink(
- IN PUNICODE_STRING SymbolicLinkName,
- IN PUNICODE_STRING DeviceName);
+ IN PUNICODE_STRING SymbolicLinkName,
+ IN PUNICODE_STRING DeviceName);
NTKERNELAPI
VOID
NTAPI
IoDeleteDevice(
- IN PDEVICE_OBJECT DeviceObject);
+ IN PDEVICE_OBJECT DeviceObject);
NTKERNELAPI
NTSTATUS
NTAPI
IoDeleteSymbolicLink(
- IN PUNICODE_STRING SymbolicLinkName);
+ IN PUNICODE_STRING SymbolicLinkName);
NTKERNELAPI
VOID
NTAPI
IoDetachDevice(
- IN OUT PDEVICE_OBJECT TargetDevice);
+ IN OUT PDEVICE_OBJECT TargetDevice);
NTKERNELAPI
VOID
NTAPI
IoDisconnectInterrupt(
- IN PKINTERRUPT InterruptObject);
+ IN PKINTERRUPT InterruptObject);
NTKERNELAPI
VOID
PDEVICE_OBJECT
NTAPI
IoGetAttachedDeviceReference(
- IN PDEVICE_OBJECT DeviceObject);
+ IN PDEVICE_OBJECT DeviceObject);
NTKERNELAPI
NTSTATUS
NTAPI
IoGetBootDiskInformation(
- IN OUT PBOOTDISK_INFORMATION BootDiskInformation,
- IN ULONG Size);
+ IN OUT PBOOTDISK_INFORMATION BootDiskInformation,
+ IN ULONG Size);
NTKERNELAPI
NTSTATUS
NTAPI
IoGetDeviceInterfaceAlias(
- IN PUNICODE_STRING SymbolicLinkName,
- IN CONST GUID *AliasInterfaceClassGuid,
- OUT PUNICODE_STRING AliasSymbolicLinkName);
+ IN PUNICODE_STRING SymbolicLinkName,
+ IN CONST GUID *AliasInterfaceClassGuid,
+ OUT PUNICODE_STRING AliasSymbolicLinkName);
NTKERNELAPI
PEPROCESS
NTAPI
-IoGetCurrentProcess(
- VOID);
+IoGetCurrentProcess(VOID);
NTKERNELAPI
NTSTATUS
NTAPI
IoGetDeviceInterfaces(
- IN CONST GUID *InterfaceClassGuid,
- IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL,
- IN ULONG Flags,
- OUT PWSTR *SymbolicLinkList);
+ IN CONST GUID *InterfaceClassGuid,
+ IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL,
+ IN ULONG Flags,
+ OUT PWSTR *SymbolicLinkList);
NTKERNELAPI
NTSTATUS
NTAPI
IoGetDeviceObjectPointer(
- IN PUNICODE_STRING ObjectName,
- IN ACCESS_MASK DesiredAccess,
- OUT PFILE_OBJECT *FileObject,
- OUT PDEVICE_OBJECT *DeviceObject);
+ IN PUNICODE_STRING ObjectName,
+ IN ACCESS_MASK DesiredAccess,
+ OUT PFILE_OBJECT *FileObject,
+ OUT PDEVICE_OBJECT *DeviceObject);
NTKERNELAPI
NTSTATUS
NTAPI
IoGetDeviceProperty(
- IN PDEVICE_OBJECT DeviceObject,
- IN DEVICE_REGISTRY_PROPERTY DeviceProperty,
- IN ULONG BufferLength,
- OUT PVOID PropertyBuffer,
- OUT PULONG ResultLength);
+ IN PDEVICE_OBJECT DeviceObject,
+ IN DEVICE_REGISTRY_PROPERTY DeviceProperty,
+ IN ULONG BufferLength,
+ OUT PVOID PropertyBuffer,
+ OUT PULONG ResultLength);
NTKERNELAPI
PDMA_ADAPTER
NTAPI
IoGetDmaAdapter(
- IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL,
- IN PDEVICE_DESCRIPTION DeviceDescription,
- IN OUT PULONG NumberOfMapRegisters);
+ IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL,
+ IN PDEVICE_DESCRIPTION DeviceDescription,
+ IN OUT PULONG NumberOfMapRegisters);
NTKERNELAPI
PVOID
NTAPI
IoGetDriverObjectExtension(
- IN PDRIVER_OBJECT DriverObject,
- IN PVOID ClientIdentificationAddress);
+ IN PDRIVER_OBJECT DriverObject,
+ IN PVOID ClientIdentificationAddress);
NTKERNELAPI
PVOID
NTAPI
-IoGetInitialStack(
- VOID);
+IoGetInitialStack(VOID);
NTKERNELAPI
PDEVICE_OBJECT
NTAPI
IoGetRelatedDeviceObject(
- IN PFILE_OBJECT FileObject);
+ IN PFILE_OBJECT FileObject);
NTKERNELAPI
VOID
NTAPI
IoQueueWorkItem(
- IN PIO_WORKITEM IoWorkItem,
- IN PIO_WORKITEM_ROUTINE WorkerRoutine,
- IN WORK_QUEUE_TYPE QueueType,
- IN PVOID Context OPTIONAL);
+ IN PIO_WORKITEM IoWorkItem,
+ IN PIO_WORKITEM_ROUTINE WorkerRoutine,
+ IN WORK_QUEUE_TYPE QueueType,
+ IN PVOID Context OPTIONAL);
NTKERNELAPI
VOID
NTAPI
IoInitializeIrp(
- IN OUT PIRP Irp,
- IN USHORT PacketSize,
- IN CCHAR StackSize);
+ IN OUT PIRP Irp,
+ IN USHORT PacketSize,
+ IN CCHAR StackSize);
NTKERNELAPI
VOID
NTAPI
IoInitializeRemoveLockEx(
- IN PIO_REMOVE_LOCK Lock,
- IN ULONG AllocateTag,
- IN ULONG MaxLockedMinutes,
- IN ULONG HighWatermark,
- IN ULONG RemlockSize);
+ IN PIO_REMOVE_LOCK Lock,
+ IN ULONG AllocateTag,
+ IN ULONG MaxLockedMinutes,
+ IN ULONG HighWatermark,
+ IN ULONG RemlockSize);
NTKERNELAPI
NTSTATUS
NTAPI
IoInitializeTimer(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIO_TIMER_ROUTINE TimerRoutine,
- IN PVOID Context OPTIONAL);
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PIO_TIMER_ROUTINE TimerRoutine,
+ IN PVOID Context OPTIONAL);
NTKERNELAPI
VOID
NTAPI
IoInvalidateDeviceRelations(
- IN PDEVICE_OBJECT DeviceObject,
- IN DEVICE_RELATION_TYPE Type);
+ IN PDEVICE_OBJECT DeviceObject,
+ IN DEVICE_RELATION_TYPE Type);
NTKERNELAPI
VOID
NTAPI
IoInvalidateDeviceState(
- IN PDEVICE_OBJECT PhysicalDeviceObject);
+ IN PDEVICE_OBJECT PhysicalDeviceObject);
NTKERNELAPI
BOOLEAN
NTAPI
IoIsWdmVersionAvailable(
- IN UCHAR MajorVersion,
- IN UCHAR MinorVersion);
+ IN UCHAR MajorVersion,
+ IN UCHAR MinorVersion);
NTKERNELAPI
NTSTATUS
NTAPI
IoOpenDeviceInterfaceRegistryKey(
- IN PUNICODE_STRING SymbolicLinkName,
- IN ACCESS_MASK DesiredAccess,
- OUT PHANDLE DeviceInterfaceKey);
+ IN PUNICODE_STRING SymbolicLinkName,
+ IN ACCESS_MASK DesiredAccess,
+ OUT PHANDLE DeviceInterfaceKey);
NTKERNELAPI
NTSTATUS
NTAPI
IoOpenDeviceRegistryKey(
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG DevInstKeyType,
- IN ACCESS_MASK DesiredAccess,
- OUT PHANDLE DevInstRegKey);
+ IN PDEVICE_OBJECT DeviceObject,
+ IN ULONG DevInstKeyType,
+ IN ACCESS_MASK DesiredAccess,
+ OUT PHANDLE DevInstRegKey);
NTKERNELAPI
NTSTATUS
NTAPI
IoRegisterDeviceInterface(
- IN PDEVICE_OBJECT PhysicalDeviceObject,
- IN CONST GUID *InterfaceClassGuid,
- IN PUNICODE_STRING ReferenceString OPTIONAL,
- OUT PUNICODE_STRING SymbolicLinkName);
+ IN PDEVICE_OBJECT PhysicalDeviceObject,
+ IN CONST GUID *InterfaceClassGuid,
+ IN PUNICODE_STRING ReferenceString OPTIONAL,
+ OUT PUNICODE_STRING SymbolicLinkName);
NTKERNELAPI
NTSTATUS
NTAPI
IoRegisterPlugPlayNotification(
- IN IO_NOTIFICATION_EVENT_CATEGORY EventCategory,
- IN ULONG EventCategoryFlags,
- IN PVOID EventCategoryData OPTIONAL,
- IN PDRIVER_OBJECT DriverObject,
- IN PDRIVER_NOTIFICATION_CALLBACK_ROUTINE CallbackRoutine,
- IN OUT PVOID Context OPTIONAL,
- OUT PVOID *NotificationEntry);
+ IN IO_NOTIFICATION_EVENT_CATEGORY EventCategory,
+ IN ULONG EventCategoryFlags,
+ IN PVOID EventCategoryData OPTIONAL,
+ IN PDRIVER_OBJECT DriverObject,
+ IN PDRIVER_NOTIFICATION_CALLBACK_ROUTINE CallbackRoutine,
+ IN OUT PVOID Context OPTIONAL,
+ OUT PVOID *NotificationEntry);
NTKERNELAPI
NTSTATUS
NTAPI
IoRegisterShutdownNotification(
- IN PDEVICE_OBJECT DeviceObject);
+ IN PDEVICE_OBJECT DeviceObject);
NTKERNELAPI
VOID
NTAPI
IoReleaseCancelSpinLock(
- IN KIRQL Irql);
+ IN KIRQL Irql);
NTKERNELAPI
VOID
NTAPI
IoReleaseRemoveLockAndWaitEx(
- IN PIO_REMOVE_LOCK RemoveLock,
- IN PVOID Tag OPTIONAL,
- IN ULONG RemlockSize);
+ IN PIO_REMOVE_LOCK RemoveLock,
+ IN PVOID Tag OPTIONAL,
+ IN ULONG RemlockSize);
NTKERNELAPI
VOID
NTAPI
IoReleaseRemoveLockEx(
- IN PIO_REMOVE_LOCK RemoveLock,
- IN PVOID Tag OPTIONAL,
- IN ULONG RemlockSize);
+ IN PIO_REMOVE_LOCK RemoveLock,
+ IN PVOID Tag OPTIONAL,
+ IN ULONG RemlockSize);
NTKERNELAPI
VOID
NTAPI
IoRemoveShareAccess(
- IN PFILE_OBJECT FileObject,
- IN OUT PSHARE_ACCESS ShareAccess);
+ IN PFILE_OBJECT FileObject,
+ IN OUT PSHARE_ACCESS ShareAccess);
NTKERNELAPI
NTSTATUS
NTAPI
IoReportTargetDeviceChange(
- IN PDEVICE_OBJECT PhysicalDeviceObject,
- IN PVOID NotificationStructure);
+ IN PDEVICE_OBJECT PhysicalDeviceObject,
+ IN PVOID NotificationStructure);
NTKERNELAPI
NTSTATUS
NTAPI
IoReportTargetDeviceChangeAsynchronous(
- IN PDEVICE_OBJECT PhysicalDeviceObject,
- IN PVOID NotificationStructure,
- IN PDEVICE_CHANGE_COMPLETE_CALLBACK Callback OPTIONAL,
- IN PVOID Context OPTIONAL);
+ IN PDEVICE_OBJECT PhysicalDeviceObject,
+ IN PVOID NotificationStructure,
+ IN PDEVICE_CHANGE_COMPLETE_CALLBACK Callback OPTIONAL,
+ IN PVOID Context OPTIONAL);
NTKERNELAPI
VOID
NTAPI
IoRequestDeviceEject(
- IN PDEVICE_OBJECT PhysicalDeviceObject);
+ IN PDEVICE_OBJECT PhysicalDeviceObject);
NTKERNELAPI
VOID
NTAPI
IoReuseIrp(
- IN OUT PIRP Irp,
- IN NTSTATUS Status);
+ IN OUT PIRP Irp,
+ IN NTSTATUS Status);
NTKERNELAPI
NTSTATUS
NTAPI
IoSetDeviceInterfaceState(
- IN PUNICODE_STRING SymbolicLinkName,
- IN BOOLEAN Enable);
+ IN PUNICODE_STRING SymbolicLinkName,
+ IN BOOLEAN Enable);
NTKERNELAPI
VOID
NTAPI
IoSetShareAccess(
- IN ACCESS_MASK DesiredAccess,
- IN ULONG DesiredShareAccess,
- IN OUT PFILE_OBJECT FileObject,
- OUT PSHARE_ACCESS ShareAccess);
+ IN ACCESS_MASK DesiredAccess,
+ IN ULONG DesiredShareAccess,
+ IN OUT PFILE_OBJECT FileObject,
+ OUT PSHARE_ACCESS ShareAccess);
NTKERNELAPI
VOID
NTAPI
IoStartNextPacket(
- IN PDEVICE_OBJECT DeviceObject,
- IN BOOLEAN Cancelable);
+ IN PDEVICE_OBJECT DeviceObject,
+ IN BOOLEAN Cancelable);
NTKERNELAPI
VOID
NTAPI
IoStartNextPacketByKey(
- IN PDEVICE_OBJECT DeviceObject,
- IN BOOLEAN Cancelable,
- IN ULONG Key);
+ IN PDEVICE_OBJECT DeviceObject,
+ IN BOOLEAN Cancelable,
+ IN ULONG Key);
NTKERNELAPI
VOID
NTAPI
IoStartPacket(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp,
- IN PULONG Key OPTIONAL,
- IN PDRIVER_CANCEL CancelFunction OPTIONAL);
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PIRP Irp,
+ IN PULONG Key OPTIONAL,
+ IN PDRIVER_CANCEL CancelFunction OPTIONAL);
NTKERNELAPI
VOID
NTAPI
IoStartTimer(
- IN PDEVICE_OBJECT DeviceObject);
+ IN PDEVICE_OBJECT DeviceObject);
NTKERNELAPI
VOID
NTAPI
IoStopTimer(
- IN PDEVICE_OBJECT DeviceObject);
+ IN PDEVICE_OBJECT DeviceObject);
NTKERNELAPI
NTSTATUS
NTAPI
IoUnregisterPlugPlayNotification(
- IN PVOID NotificationEntry);
+ IN PVOID NotificationEntry);
NTKERNELAPI
VOID
NTAPI
IoUnregisterShutdownNotification(
- IN PDEVICE_OBJECT DeviceObject);
+ IN PDEVICE_OBJECT DeviceObject);
NTKERNELAPI
VOID
NTAPI
IoUpdateShareAccess(
- IN PFILE_OBJECT FileObject,
- IN OUT PSHARE_ACCESS ShareAccess);
+ IN PFILE_OBJECT FileObject,
+ IN OUT PSHARE_ACCESS ShareAccess);
NTKERNELAPI
NTSTATUS
NTAPI
IoWMIAllocateInstanceIds(
- IN GUID *Guid,
- IN ULONG InstanceCount,
- OUT ULONG *FirstInstanceId);
+ IN GUID *Guid,
+ IN ULONG InstanceCount,
+ OUT ULONG *FirstInstanceId);
NTKERNELAPI
NTSTATUS
NTAPI
IoWMIQuerySingleInstanceMultiple(
- IN PVOID *DataBlockObjectList,
- IN PUNICODE_STRING InstanceNames,
- IN ULONG ObjectCount,
- IN OUT ULONG *InOutBufferSize,
- OUT PVOID OutBuffer);
+ IN PVOID *DataBlockObjectList,
+ IN PUNICODE_STRING InstanceNames,
+ IN ULONG ObjectCount,
+ IN OUT ULONG *InOutBufferSize,
+ OUT PVOID OutBuffer);
NTKERNELAPI
NTSTATUS
NTAPI
IoWMIRegistrationControl(
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG Action);
+ IN PDEVICE_OBJECT DeviceObject,
+ IN ULONG Action);
NTKERNELAPI
NTSTATUS
NTAPI
IoWMISuggestInstanceName(
- IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL,
- IN PUNICODE_STRING SymbolicLinkName OPTIONAL,
- IN BOOLEAN CombineNames,
- OUT PUNICODE_STRING SuggestedInstanceName);
+ IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL,
+ IN PUNICODE_STRING SymbolicLinkName OPTIONAL,
+ IN BOOLEAN CombineNames,
+ OUT PUNICODE_STRING SuggestedInstanceName);
NTKERNELAPI
NTSTATUS
NTAPI
IoWMIWriteEvent(
- IN PVOID WnodeEventItem);
+ IN OUT PVOID WnodeEventItem);
NTKERNELAPI
VOID
NTAPI
IoWriteErrorLogEntry(
- IN PVOID ElEntry);
+ IN PVOID ElEntry);
-#endif
+NTKERNELAPI
+PIRP
+NTAPI
+IoGetTopLevelIrp(VOID);
-#if (NTDDI_VERSION >= NTDDI_WINXP)
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoRegisterLastChanceShutdownNotification(
+ IN PDEVICE_OBJECT DeviceObject);
+
+NTKERNELAPI
+VOID
+NTAPI
+IoSetTopLevelIrp(
+ IN PIRP Irp OPTIONAL);
+$endif (_WDMDDK_)
+$if (_NTDDK_)
+#if !(defined(USE_DMA_MACROS) && (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_))
NTKERNELAPI
NTSTATUS
NTAPI
-IoCsqInitialize(
- IN 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);
+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,
+ IN OUT PULONG Length,
+ IN BOOLEAN WriteToDevice);
+#endif
NTKERNELAPI
VOID
NTAPI
-IoCsqInsertIrp(
- IN PIO_CSQ Csq,
- IN PIRP Irp,
- IN PIO_CSQ_IRP_CONTEXT Context OPTIONAL);
+IoAllocateController(
+ IN PCONTROLLER_OBJECT ControllerObject,
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PDRIVER_CONTROL ExecutionRoutine,
+ IN PVOID Context OPTIONAL);
NTKERNELAPI
-PIRP
+PCONTROLLER_OBJECT
NTAPI
-IoCsqRemoveIrp(
- IN PIO_CSQ Csq,
- IN PIO_CSQ_IRP_CONTEXT Context);
+IoCreateController(
+ IN ULONG Size);
NTKERNELAPI
-PIRP
+VOID
NTAPI
-IoCsqRemoveNextIrp(
- IN PIO_CSQ Csq,
- IN PVOID PeekContext);
+IoDeleteController(
+ IN PCONTROLLER_OBJECT ControllerObject);
NTKERNELAPI
-BOOLEAN
+VOID
NTAPI
-IoForwardIrpSynchronously(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp);
+IoFreeController(
+ IN PCONTROLLER_OBJECT ControllerObject);
-#define IoForwardAndCatchIrp IoForwardIrpSynchronously
+NTKERNELAPI
+PCONFIGURATION_INFORMATION
+NTAPI
+IoGetConfigurationInformation(VOID);
+
+NTKERNELAPI
+PDEVICE_OBJECT
+NTAPI
+IoGetDeviceToVerify(
+ IN PETHREAD Thread);
NTKERNELAPI
VOID
NTAPI
-IoFreeErrorLogEntry(
- PVOID ElEntry);
+IoCancelFileOpen(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PFILE_OBJECT FileObject);
+
+NTKERNELAPI
+PGENERIC_MAPPING
+NTAPI
+IoGetFileObjectGenericMapping(VOID);
+
+NTKERNELAPI
+PIRP
+NTAPI
+IoMakeAssociatedIrp(
+ IN PIRP Irp,
+ IN CCHAR StackSize);
NTKERNELAPI
NTSTATUS
NTAPI
-IoSetCompletionRoutineEx(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp,
- IN PIO_COMPLETION_ROUTINE CompletionRoutine,
- IN PVOID Context,
- IN BOOLEAN InvokeOnSuccess,
- IN BOOLEAN InvokeOnError,
- IN BOOLEAN InvokeOnCancel);
+IoQueryDeviceDescription(
+ IN PINTERFACE_TYPE BusType OPTIONAL,
+ IN PULONG BusNumber OPTIONAL,
+ IN PCONFIGURATION_TYPE ControllerType OPTIONAL,
+ IN PULONG ControllerNumber OPTIONAL,
+ IN PCONFIGURATION_TYPE PeripheralType OPTIONAL,
+ IN PULONG PeripheralNumber OPTIONAL,
+ IN PIO_QUERY_DEVICE_ROUTINE CalloutRoutine,
+ IN OUT PVOID Context OPTIONAL);
+NTKERNELAPI
VOID
NTAPI
-IoSetStartIoAttributes(
- IN PDEVICE_OBJECT DeviceObject,
- IN BOOLEAN DeferredStartIo,
- IN BOOLEAN NonCancelable);
+IoRaiseHardError(
+ IN PIRP Irp,
+ IN PVPB Vpb OPTIONAL,
+ IN PDEVICE_OBJECT RealDeviceObject);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+IoRaiseInformationalHardError(
+ IN NTSTATUS ErrorStatus,
+ IN PUNICODE_STRING String OPTIONAL,
+ IN PKTHREAD Thread OPTIONAL);
+
+NTKERNELAPI
+VOID
+NTAPI
+IoRegisterBootDriverReinitialization(
+ IN PDRIVER_OBJECT DriverObject,
+ IN PDRIVER_REINITIALIZE DriverReinitializationRoutine,
+ IN PVOID Context OPTIONAL);
+
+NTKERNELAPI
+VOID
+NTAPI
+IoRegisterDriverReinitialization(
+ IN PDRIVER_OBJECT DriverObject,
+ IN PDRIVER_REINITIALIZE DriverReinitializationRoutine,
+ IN PVOID Context OPTIONAL);
NTKERNELAPI
NTSTATUS
NTAPI
-IoWMIDeviceObjectToInstanceName(
- IN PVOID DataBlockObject,
- IN PDEVICE_OBJECT DeviceObject,
- OUT PUNICODE_STRING InstanceName);
+IoAttachDeviceByPointer(
+ IN PDEVICE_OBJECT SourceDevice,
+ IN PDEVICE_OBJECT TargetDevice);
NTKERNELAPI
NTSTATUS
NTAPI
-IoWMIExecuteMethod(
- IN PVOID DataBlockObject,
- IN PUNICODE_STRING InstanceName,
- IN ULONG MethodId,
- IN ULONG InBufferSize,
- IN OUT PULONG OutBufferSize,
- IN OUT PUCHAR InOutBuffer);
+IoReportDetectedDevice(
+ IN PDRIVER_OBJECT DriverObject,
+ IN INTERFACE_TYPE LegacyBusType,
+ IN ULONG BusNumber,
+ IN ULONG SlotNumber,
+ IN PCM_RESOURCE_LIST ResourceList OPTIONAL,
+ IN PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirements OPTIONAL,
+ IN BOOLEAN ResourceAssigned,
+ IN OUT PDEVICE_OBJECT *DeviceObject OPTIONAL);
NTKERNELAPI
NTSTATUS
NTAPI
-IoWMIHandleToInstanceName(
- IN PVOID DataBlockObject,
- IN HANDLE FileHandle,
- OUT PUNICODE_STRING InstanceName);
+IoReportResourceForDetection(
+ IN PDRIVER_OBJECT DriverObject,
+ IN PCM_RESOURCE_LIST DriverList OPTIONAL,
+ IN ULONG DriverListSize OPTIONAL,
+ IN PDEVICE_OBJECT DeviceObject OPTIONAL,
+ IN PCM_RESOURCE_LIST DeviceList OPTIONAL,
+ IN ULONG DeviceListSize OPTIONAL,
+ OUT PBOOLEAN ConflictDetected);
NTKERNELAPI
NTSTATUS
NTAPI
-IoWMIOpenBlock(
- IN GUID *DataBlockGuid,
- IN ULONG DesiredAccess,
- OUT PVOID *DataBlockObject);
+IoReportResourceUsage(
+ IN PUNICODE_STRING DriverClassName OPTIONAL,
+ IN PDRIVER_OBJECT DriverObject,
+ IN PCM_RESOURCE_LIST DriverList OPTIONAL,
+ IN ULONG DriverListSize OPTIONAL,
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PCM_RESOURCE_LIST DeviceList OPTIONAL,
+ IN ULONG DeviceListSize OPTIONAL,
+ IN BOOLEAN OverrideConflict,
+ OUT PBOOLEAN ConflictDetected);
+
+NTKERNELAPI
+VOID
+NTAPI
+IoSetHardErrorOrVerifyDevice(
+ IN PIRP Irp,
+ IN PDEVICE_OBJECT DeviceObject);
NTKERNELAPI
NTSTATUS
NTAPI
-IoWMIQueryAllData(
- IN PVOID DataBlockObject,
- IN OUT ULONG *InOutBufferSize,
- OUT PVOID OutBuffer);
+IoAssignResources(
+ IN PUNICODE_STRING RegistryPath,
+ IN PUNICODE_STRING DriverClassName OPTIONAL,
+ IN PDRIVER_OBJECT DriverObject,
+ IN PDEVICE_OBJECT DeviceObject OPTIONAL,
+ IN PIO_RESOURCE_REQUIREMENTS_LIST RequestedResources OPTIONAL,
+ IN OUT PCM_RESOURCE_LIST *AllocatedResources);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+IoSetThreadHardErrorMode(
+ IN BOOLEAN EnableHardErrors);
+
+$endif (_NTDDK_)
+$if (_NTIFS_)
+
+NTKERNELAPI
+VOID
+NTAPI
+IoAcquireVpbSpinLock(
+ OUT PKIRQL Irql);
NTKERNELAPI
NTSTATUS
NTAPI
-IoWMIQueryAllDataMultiple(
- IN PVOID *DataBlockObjectList,
- IN ULONG ObjectCount,
- IN OUT ULONG *InOutBufferSize,
- OUT PVOID OutBuffer);
+IoCheckDesiredAccess(
+ IN OUT PACCESS_MASK DesiredAccess,
+ IN ACCESS_MASK GrantedAccess);
NTKERNELAPI
NTSTATUS
NTAPI
-IoWMIQuerySingleInstance(
- IN PVOID DataBlockObject,
- IN PUNICODE_STRING InstanceName,
- IN OUT ULONG *InOutBufferSize,
- OUT PVOID OutBuffer);
+IoCheckEaBufferValidity(
+ IN PFILE_FULL_EA_INFORMATION EaBuffer,
+ IN ULONG EaLength,
+ OUT PULONG ErrorOffset);
NTKERNELAPI
NTSTATUS
NTAPI
-IoWMISetNotificationCallback(
- IN OUT PVOID Object,
- IN WMI_NOTIFICATION_CALLBACK Callback,
- IN PVOID Context OPTIONAL);
+IoCheckFunctionAccess(
+ IN ACCESS_MASK GrantedAccess,
+ IN UCHAR MajorFunction,
+ IN UCHAR MinorFunction,
+ IN ULONG IoControlCode,
+ IN PVOID Argument1 OPTIONAL,
+ IN PVOID Argument2 OPTIONAL);
NTKERNELAPI
NTSTATUS
NTAPI
-IoWMISetSingleInstance(
- IN PVOID DataBlockObject,
- IN PUNICODE_STRING InstanceName,
- IN ULONG Version,
- IN ULONG ValueBufferSize,
- IN PVOID ValueBuffer);
+IoCheckQuerySetFileInformation(
+ IN FILE_INFORMATION_CLASS FileInformationClass,
+ IN ULONG Length,
+ IN BOOLEAN SetOperation);
NTKERNELAPI
NTSTATUS
NTAPI
-IoWMISetSingleItem(
- IN PVOID DataBlockObject,
- IN PUNICODE_STRING InstanceName,
- IN ULONG DataItemId,
- IN ULONG Version,
- IN ULONG ValueBufferSize,
- IN PVOID ValueBuffer);
+IoCheckQuerySetVolumeInformation(
+ IN FS_INFORMATION_CLASS FsInformationClass,
+ IN ULONG Length,
+ IN BOOLEAN SetOperation);
-#endif
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoCheckQuotaBufferValidity(
+ IN PFILE_QUOTA_INFORMATION QuotaBuffer,
+ IN ULONG QuotaLength,
+ OUT PULONG ErrorOffset);
-#if defined(_WIN64)
NTKERNELAPI
-ULONG
+PFILE_OBJECT
NTAPI
-IoWMIDeviceObjectToProviderId(
- IN PDEVICE_OBJECT DeviceObject);
-#else
-#define IoWMIDeviceObjectToProviderId(DeviceObject) ((ULONG)(DeviceObject))
-#endif
+IoCreateStreamFileObject(
+ IN PFILE_OBJECT FileObject OPTIONAL,
+ IN PDEVICE_OBJECT DeviceObject OPTIONAL);
-/*
- * USHORT
- * IoSizeOfIrp(
- * IN CCHAR StackSize)
- */
-#define IoSizeOfIrp(_StackSize) \
+NTKERNELAPI
+PFILE_OBJECT
+NTAPI
+IoCreateStreamFileObjectLite(
+ IN PFILE_OBJECT FileObject OPTIONAL,
+ IN PDEVICE_OBJECT DeviceObject OPTIONAL);
+
+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);
+
+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 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 PDEVICE_OBJECT DeviceObject OPTIONAL);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoSetInformation(
+ IN PFILE_OBJECT FileObject,
+ IN FILE_INFORMATION_CLASS FileInformationClass,
+ IN ULONG Length,
+ IN PVOID FileInformation);
+
+NTKERNELAPI
+VOID
+NTAPI
+IoSetTopLevelIrp(
+ IN PIRP Irp OPTIONAL);
+
+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(
+ IN 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(
+ IN PIO_CSQ Csq,
+ IN PIRP Irp,
+ IN PIO_CSQ_IRP_CONTEXT Context OPTIONAL);
+
+NTKERNELAPI
+PIRP
+NTAPI
+IoCsqRemoveIrp(
+ IN PIO_CSQ Csq,
+ IN PIO_CSQ_IRP_CONTEXT Context);
+
+NTKERNELAPI
+PIRP
+NTAPI
+IoCsqRemoveNextIrp(
+ IN PIO_CSQ Csq,
+ IN PVOID PeekContext OPTIONAL);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+IoForwardIrpSynchronously(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PIRP Irp);
+
+#define IoForwardAndCatchIrp IoForwardIrpSynchronously
+
+NTKERNELAPI
+VOID
+NTAPI
+IoFreeErrorLogEntry(
+ PVOID ElEntry);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoSetCompletionRoutineEx(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PIRP Irp,
+ IN PIO_COMPLETION_ROUTINE CompletionRoutine,
+ IN 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,
+ IN OUT PULONG OutBufferSize,
+ IN OUT PUCHAR InOutBuffer);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoWMIHandleToInstanceName(
+ IN PVOID DataBlockObject,
+ IN HANDLE FileHandle,
+ OUT PUNICODE_STRING InstanceName);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoWMIOpenBlock(
+ IN GUID *DataBlockGuid,
+ IN ULONG DesiredAccess,
+ OUT PVOID *DataBlockObject);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoWMIQueryAllData(
+ IN PVOID DataBlockObject,
+ IN OUT ULONG *InOutBufferSize,
+ OUT PVOID OutBuffer);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoWMIQueryAllDataMultiple(
+ IN PVOID *DataBlockObjectList,
+ IN ULONG ObjectCount,
+ IN OUT ULONG *InOutBufferSize,
+ OUT PVOID OutBuffer);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoWMIQuerySingleInstance(
+ IN PVOID DataBlockObject,
+ IN PUNICODE_STRING InstanceName,
+ IN OUT ULONG *InOutBufferSize,
+ OUT PVOID OutBuffer);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoWMISetNotificationCallback(
+ IN OUT PVOID Object,
+ IN WMI_NOTIFICATION_CALLBACK Callback,
+ IN PVOID Context OPTIONAL);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoWMISetSingleInstance(
+ IN PVOID DataBlockObject,
+ IN PUNICODE_STRING InstanceName,
+ IN ULONG Version,
+ IN ULONG ValueBufferSize,
+ IN PVOID ValueBuffer);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoWMISetSingleItem(
+ IN PVOID DataBlockObject,
+ IN PUNICODE_STRING InstanceName,
+ IN ULONG DataItemId,
+ IN ULONG Version,
+ IN ULONG ValueBufferSize,
+ IN PVOID ValueBuffer);
+$endif (_WDMDDK_)
+$if (_NTDDK_)
+NTKERNELAPI
+NTSTATUS
+FASTCALL
+IoReadPartitionTable(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN ULONG SectorSize,
+ IN BOOLEAN ReturnRecognizedPartitions,
+ OUT struct _DRIVE_LAYOUT_INFORMATION **PartitionBuffer);
+
+NTKERNELAPI
+NTSTATUS
+FASTCALL
+IoSetPartitionInformation(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN ULONG SectorSize,
+ IN ULONG PartitionNumber,
+ IN ULONG PartitionType);
+
+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 struct _CREATE_DISK* Disk OPTIONAL);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoReadDiskSignature(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN ULONG BytesPerSector,
+ OUT PDISK_SIGNATURE Signature);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoReadPartitionTableEx(
+ IN PDEVICE_OBJECT DeviceObject,
+ OUT struct _DRIVE_LAYOUT_INFORMATION_EX **PartitionBuffer);
+
+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 PUNICODE_STRING DosName);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoWritePartitionTableEx(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN 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 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 InternalParameters OPTIONAL,
+ IN ULONG Options,
+ IN PVOID DeviceObject OPTIONAL);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoAttachDeviceToDeviceStackSafe(
+ IN PDEVICE_OBJECT SourceDevice,
+ IN PDEVICE_OBJECT TargetDevice,
+ OUT PDEVICE_OBJECT *AttachedToDeviceObject);
+
+$endif (_NTDDK_)
+$if (_NTIFS_)
+
+NTKERNELAPI
+PFILE_OBJECT
+NTAPI
+IoCreateStreamFileObjectEx(
+ IN PFILE_OBJECT FileObject OPTIONAL,
+ IN PDEVICE_OBJECT DeviceObject OPTIONAL,
+ OUT PHANDLE FileObjectHandle OPTIONAL);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoQueryFileDosDeviceName(
+ IN PFILE_OBJECT FileObject,
+ OUT POBJECT_NAME_INFORMATION *ObjectNameInformation);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoEnumerateDeviceObjectList(
+ IN PDRIVER_OBJECT DriverObject,
+ OUT 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
+$if (_NTDDK_)
+NTKERNELAPI
+IO_PAGING_PRIORITY
+FASTCALL
+IoGetPagingIoPriority(
+ IN PIRP Irp);
+
+$endif (_NTDDK_)
+$if (_WDMDDK_)
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoCsqInitializeEx(
+ IN 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(
+ IN PIO_CSQ Csq,
+ IN PIRP Irp,
+ IN PIO_CSQ_IRP_CONTEXT Context OPTIONAL,
+ IN PVOID InsertContext OPTIONAL);
+$endif (_WDMDDK_)
+$if (_WDMDDK_ || _NTDDK_)
+#endif /* (NTDDI_VERSION >= NTDDI_WS03) */
+$endif
+$if (_NTDDK_ || _NTIFS_)
+#if (NTDDI_VERSION >= NTDDI_WS03SP1)
+$endif
+
+$if (_NTDDK_)
+BOOLEAN
+NTAPI
+IoTranslateBusAddress(
+ IN INTERFACE_TYPE InterfaceType,
+ IN ULONG BusNumber,
+ IN PHYSICAL_ADDRESS BusAddress,
+ IN OUT PULONG AddressSpace,
+ OUT PPHYSICAL_ADDRESS TranslatedAddress);
+$endif (_NTDDK_)
+$if (_NTIFS_)
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoEnumerateRegisteredFiltersList(
+ OUT PDRIVER_OBJECT *DriverObjectList,
+ IN ULONG DriverObjectListSize,
+ OUT PULONG ActualNumberDriverObjects);
+$endif (_NTIFS_)
+$if (_NTDDK_ || _NTIFS_)
+#endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */
+$endif
+
+#if (NTDDI_VERSION >= NTDDI_VISTA)
+$if (_WDMDDK_)
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoGetBootDiskInformationLite(
+ OUT PBOOTDISK_INFORMATION_LITE *BootDiskInformation);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoCheckShareAccessEx(
+ IN ACCESS_MASK DesiredAccess,
+ IN ULONG DesiredShareAccess,
+ IN OUT PFILE_OBJECT FileObject,
+ IN OUT PSHARE_ACCESS ShareAccess,
+ IN BOOLEAN Update,
+ IN PBOOLEAN WritePermission);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoConnectInterruptEx(
+ IN OUT 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,
+ IN OUT PFILE_OBJECT FileObject,
+ OUT PSHARE_ACCESS ShareAccess,
+ IN PBOOLEAN WritePermission);
+
+ULONG
+NTAPI
+IoSizeofWorkItem(VOID);
+
+VOID
+NTAPI
+IoInitializeWorkItem(
+ IN PVOID IoObject,
+ IN PIO_WORKITEM IoWorkItem);
+
+VOID
+NTAPI
+IoUninitializeWorkItem(
+ IN PIO_WORKITEM IoWorkItem);
+
+VOID
+NTAPI
+IoQueueWorkItemEx(
+ IN PIO_WORKITEM IoWorkItem,
+ IN PIO_WORKITEM_ROUTINE_EX WorkerRoutine,
+ IN WORK_QUEUE_TYPE QueueType,
+ IN PVOID Context OPTIONAL);
+
+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);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoRequestDeviceEjectEx(
+ IN PDEVICE_OBJECT PhysicalDeviceObject,
+ IN PIO_DEVICE_EJECT_CALLBACK Callback OPTIONAL,
+ IN PVOID Context OPTIONAL,
+ IN PDRIVER_OBJECT DriverObject OPTIONAL);
+
+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 PVOID Data OPTIONAL);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoGetDevicePropertyData(
+ PDEVICE_OBJECT Pdo,
+ CONST DEVPROPKEY *PropertyKey,
+ LCID Lcid,
+ ULONG Flags,
+ ULONG Size,
+ PVOID Data,
+ PULONG RequiredSize,
+ 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 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 InternalParameters OPTIONAL,
+ IN ULONG Options,
+ IN PIO_DRIVER_CREATE_CONTEXT DriverContext OPTIONAL);
+
+NTSTATUS
+NTAPI
+IoSetIrpExtraCreateParameter(
+ IN OUT PIRP Irp,
+ IN struct _ECP_LIST *ExtraCreateParameter);
+
+VOID
+NTAPI
+IoClearIrpExtraCreateParameter(
+ IN OUT PIRP Irp);
+
+NTSTATUS
+NTAPI
+IoGetIrpExtraCreateParameter(
+ IN PIRP Irp,
+ OUT struct _ECP_LIST **ExtraCreateParameter OPTIONAL);
+
+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)
+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 PVOID ContainerObject OPTIONAL,
+ IN OUT PVOID Buffer OPTIONAL,
+ IN ULONG BufferLength);
+
+NTSTATUS
+NTAPI
+IoRegisterContainerNotification(
+ IN IO_CONTAINER_NOTIFICATION_CLASS NotificationClass,
+ IN PIO_CONTAINER_NOTIFICATION_FUNCTION CallbackFunction,
+ IN PVOID NotificationInformation OPTIONAL,
+ IN ULONG NotificationInformationLength,
+ OUT PVOID CallbackRegistration);
+
+VOID
+NTAPI
+IoUnregisterContainerNotification(
+ IN PVOID CallbackRegistration);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoUnregisterPlugPlayNotificationEx(
+ IN PVOID NotificationEntry);
+
+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 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 (
+IoSkipCurrentIrpStackLocation(
IN OUT 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 (
+IoSetNextIrpStackLocation(
IN OUT PIRP Irp)
{
ASSERT(Irp->CurrentLocation > 0);
Irp->CurrentLocation--;
+#ifdef NONAMELESSUNION
+ Irp->Tail.Overlay.s.u.CurrentStackLocation--;
+#else
Irp->Tail.Overlay.CurrentStackLocation--;
+#endif
}
FORCEINLINE
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
}
FORCEINLINE
IoReleaseRemoveLockAndWaitEx(_RemoveLock, _Tag, sizeof(IO_REMOVE_LOCK))
#if defined(_WIN64)
-
NTKERNELAPI
BOOLEAN
IoIs32bitProcess(
- IN PIRP Irp OPTIONAL);
-
+ IN PIRP Irp OPTIONAL);
#endif
#define PLUGPLAY_REGKEY_DEVICE 1
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
IoInitializeRemoveLockEx(Lock, AllocateTag, MaxLockedMinutes, \
HighWatermark, sizeof(IO_REMOVE_LOCK))
-VOID
FORCEINLINE
+VOID
IoInitializeDpcRequest(
IN PDEVICE_OBJECT DeviceObject,
IN PIO_DPC_ROUTINE DpcRoutine)
FORCEINLINE
VOID
IoCopyCurrentIrpStackLocationToNext(
- IN PIRP Irp)
+ IN OUT PIRP Irp)
{
PIO_STACK_LOCATION irpSp;
PIO_STACK_LOCATION nextIrpSp;
VOID
NTAPI
IoGetStackLimits(
- OUT PULONG_PTR LowLimit,
- OUT PULONG_PTR HighLimit);
+ OUT PULONG_PTR LowLimit,
+ OUT PULONG_PTR HighLimit);
FORCEINLINE
ULONG_PTR
-IoGetRemainingStackSize(
- VOID)
+IoGetRemainingStackSize(VOID)
{
ULONG_PTR End, Begin;
ULONG_PTR Result;
return Result;
}
+#if (NTDDI_VERSION >= NTDDI_WS03)
+FORCEINLINE
+VOID
+IoInitializeThreadedDpcRequest(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PIO_DPC_ROUTINE DpcRoutine)
+{
+ KeInitializeThreadedDpc(&DeviceObject->Dpc,
+ (PKDEFERRED_ROUTINE) DpcRoutine,
+ DeviceObject );
+}
+#endif
+
+$endif (_WDMDDK_)