mirror of
https://github.com/reactos/reactos.git
synced 2025-02-25 01:39:30 +00:00
- Move more stuff to wdm.h
- Improve more Io* definitions - Convert IoSetCompletionRoutine, IoSetNextIrpStackLocation and IoSkipCurrentIrpStackLocation to inline functions svn path=/branches/header-work/; revision=45796
This commit is contained in:
parent
60f9f52f92
commit
1f96c47edf
2 changed files with 158 additions and 166 deletions
|
@ -6574,6 +6574,66 @@ IoRemoveShareAccess(
|
||||||
IN PFILE_OBJECT FileObject,
|
IN PFILE_OBJECT FileObject,
|
||||||
IN OUT PSHARE_ACCESS ShareAccess);
|
IN OUT PSHARE_ACCESS ShareAccess);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
IoReportTargetDeviceChange(
|
||||||
|
IN PDEVICE_OBJECT PhysicalDeviceObject,
|
||||||
|
IN PVOID NotificationStructure);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
IoReportTargetDeviceChangeAsynchronous(
|
||||||
|
IN PDEVICE_OBJECT PhysicalDeviceObject,
|
||||||
|
IN PVOID NotificationStructure,
|
||||||
|
IN PDEVICE_CHANGE_COMPLETE_CALLBACK Callback OPTIONAL,
|
||||||
|
IN PVOID Context OPTIONAL);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
IoRequestDeviceEject(
|
||||||
|
IN PDEVICE_OBJECT PhysicalDeviceObject);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
IoReuseIrp(
|
||||||
|
IN OUT PIRP Irp,
|
||||||
|
IN NTSTATUS Status);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
IoSetDeviceInterfaceState(
|
||||||
|
IN PUNICODE_STRING SymbolicLinkName,
|
||||||
|
IN BOOLEAN Enable);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
IoSetShareAccess(
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
IN ULONG DesiredShareAccess,
|
||||||
|
IN OUT PFILE_OBJECT FileObject,
|
||||||
|
OUT PSHARE_ACCESS ShareAccess);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
IoStartNextPacket(
|
||||||
|
IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
IN BOOLEAN Cancelable);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
IoStartNextPacketByKey(
|
||||||
|
IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
IN BOOLEAN Cancelable,
|
||||||
|
IN ULONG Key);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
IoStartPacket(
|
||||||
|
IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
IN PIRP Irp,
|
||||||
|
IN PULONG Key OPTIONAL,
|
||||||
|
IN PDRIVER_CANCEL CancelFunction OPTIONAL);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
||||||
|
@ -6621,8 +6681,106 @@ VOID
|
||||||
IoFreeErrorLogEntry(
|
IoFreeErrorLogEntry(
|
||||||
PVOID ElEntry);
|
PVOID ElEntry);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
NTSTATUS
|
||||||
|
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);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
IoSetStartIoAttributes(
|
||||||
|
IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
IN BOOLEAN DeferredStartIo,
|
||||||
|
IN BOOLEAN NonCancelable);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* USHORT
|
||||||
|
* IoSizeOfIrp(
|
||||||
|
* IN CCHAR StackSize)
|
||||||
|
*/
|
||||||
|
#define IoSizeOfIrp(_StackSize) \
|
||||||
|
((USHORT) (sizeof(IRP) + ((_StackSize) * (sizeof(IO_STACK_LOCATION)))))
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
VOID
|
||||||
|
IoSkipCurrentIrpStackLocation (
|
||||||
|
IN OUT PIRP Irp)
|
||||||
|
{
|
||||||
|
ASSERT(Irp->CurrentLocation <= Irp->StackCount);
|
||||||
|
Irp->CurrentLocation++;
|
||||||
|
Irp->Tail.Overlay.CurrentStackLocation++;
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
VOID
|
||||||
|
IoSetNextIrpStackLocation (
|
||||||
|
IN OUT PIRP Irp)
|
||||||
|
{
|
||||||
|
ASSERT(Irp->CurrentLocation > 0);
|
||||||
|
Irp->CurrentLocation--;
|
||||||
|
Irp->Tail.Overlay.CurrentStackLocation--;
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
VOID
|
||||||
|
IoSetCompletionRoutine(
|
||||||
|
IN PIRP Irp,
|
||||||
|
IN PIO_COMPLETION_ROUTINE CompletionRoutine OPTIONAL,
|
||||||
|
IN PVOID Context OPTIONAL,
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PDRIVER_CANCEL
|
||||||
|
* IoSetCancelRoutine(
|
||||||
|
* IN PIRP Irp,
|
||||||
|
* IN PDRIVER_CANCEL CancelRoutine)
|
||||||
|
*/
|
||||||
|
#define IoSetCancelRoutine(_Irp, \
|
||||||
|
_CancelRoutine) \
|
||||||
|
((PDRIVER_CANCEL) (ULONG_PTR) InterlockedExchangePointer( \
|
||||||
|
(PVOID *) &(_Irp)->CancelRoutine, (PVOID) (ULONG_PTR) (_CancelRoutine)))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* VOID
|
||||||
|
* IoRequestDpc(
|
||||||
|
* IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
* IN PIRP Irp,
|
||||||
|
* IN PVOID Context);
|
||||||
|
*/
|
||||||
|
#define IoRequestDpc(DeviceObject, Irp, Context)( \
|
||||||
|
KeInsertQueueDpc(&(DeviceObject)->Dpc, (Irp), (Context)))
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* VOID
|
* VOID
|
||||||
* IoReleaseRemoveLock(
|
* IoReleaseRemoveLock(
|
||||||
|
|
|
@ -2754,104 +2754,6 @@ IoReportResourceUsage(
|
||||||
IN BOOLEAN OverrideConflict,
|
IN BOOLEAN OverrideConflict,
|
||||||
OUT PBOOLEAN ConflictDetected);
|
OUT PBOOLEAN ConflictDetected);
|
||||||
|
|
||||||
NTKERNELAPI
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
IoReportTargetDeviceChange(
|
|
||||||
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);
|
|
||||||
|
|
||||||
NTKERNELAPI
|
|
||||||
VOID
|
|
||||||
NTAPI
|
|
||||||
IoRequestDeviceEject(
|
|
||||||
IN PDEVICE_OBJECT PhysicalDeviceObject);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* VOID
|
|
||||||
* IoRequestDpc(
|
|
||||||
* IN PDEVICE_OBJECT DeviceObject,
|
|
||||||
* IN PIRP Irp,
|
|
||||||
* IN PVOID Context);
|
|
||||||
*/
|
|
||||||
#define IoRequestDpc(DeviceObject, Irp, Context)( \
|
|
||||||
KeInsertQueueDpc(&(DeviceObject)->Dpc, (Irp), (Context)))
|
|
||||||
|
|
||||||
NTKERNELAPI
|
|
||||||
VOID
|
|
||||||
NTAPI
|
|
||||||
IoReuseIrp(
|
|
||||||
IN OUT PIRP Irp,
|
|
||||||
IN NTSTATUS Status);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* PDRIVER_CANCEL
|
|
||||||
* IoSetCancelRoutine(
|
|
||||||
* IN PIRP Irp,
|
|
||||||
* IN PDRIVER_CANCEL CancelRoutine)
|
|
||||||
*/
|
|
||||||
#define IoSetCancelRoutine(_Irp, \
|
|
||||||
_CancelRoutine) \
|
|
||||||
((PDRIVER_CANCEL) InterlockedExchangePointer( \
|
|
||||||
(PVOID *) &(_Irp)->CancelRoutine, (PVOID) (_CancelRoutine)))
|
|
||||||
|
|
||||||
/*
|
|
||||||
* VOID
|
|
||||||
* IoSetCompletionRoutine(
|
|
||||||
* IN PIRP Irp,
|
|
||||||
* IN PIO_COMPLETION_ROUTINE CompletionRoutine,
|
|
||||||
* IN PVOID Context,
|
|
||||||
* IN BOOLEAN InvokeOnSuccess,
|
|
||||||
* IN BOOLEAN InvokeOnError,
|
|
||||||
* IN BOOLEAN InvokeOnCancel)
|
|
||||||
*/
|
|
||||||
#define IoSetCompletionRoutine(_Irp, \
|
|
||||||
_CompletionRoutine, \
|
|
||||||
_Context, \
|
|
||||||
_InvokeOnSuccess, \
|
|
||||||
_InvokeOnError, \
|
|
||||||
_InvokeOnCancel) \
|
|
||||||
{ \
|
|
||||||
PIO_STACK_LOCATION _IrpSp; \
|
|
||||||
ASSERT((_InvokeOnSuccess) || (_InvokeOnError) || (_InvokeOnCancel) ? \
|
|
||||||
(_CompletionRoutine) != NULL : TRUE); \
|
|
||||||
_IrpSp = IoGetNextIrpStackLocation(_Irp); \
|
|
||||||
_IrpSp->CompletionRoutine = (PIO_COMPLETION_ROUTINE)(_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; \
|
|
||||||
}
|
|
||||||
|
|
||||||
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);
|
|
||||||
|
|
||||||
NTKERNELAPI
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
IoSetDeviceInterfaceState(
|
|
||||||
IN PUNICODE_STRING SymbolicLinkName,
|
|
||||||
IN BOOLEAN Enable);
|
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -2859,17 +2761,6 @@ IoSetHardErrorOrVerifyDevice(
|
||||||
IN PIRP Irp,
|
IN PIRP Irp,
|
||||||
IN PDEVICE_OBJECT DeviceObject);
|
IN PDEVICE_OBJECT DeviceObject);
|
||||||
|
|
||||||
/*
|
|
||||||
* VOID
|
|
||||||
* IoSetNextIrpStackLocation(
|
|
||||||
* IN OUT PIRP Irp)
|
|
||||||
*/
|
|
||||||
#define IoSetNextIrpStackLocation(_Irp) \
|
|
||||||
{ \
|
|
||||||
(_Irp)->CurrentLocation--; \
|
|
||||||
(_Irp)->Tail.Overlay.CurrentStackLocation--; \
|
|
||||||
}
|
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
FASTCALL
|
FASTCALL
|
||||||
|
@ -2887,23 +2778,6 @@ IoSetPartitionInformationEx(
|
||||||
IN ULONG PartitionNumber,
|
IN ULONG PartitionNumber,
|
||||||
IN struct _SET_PARTITION_INFORMATION_EX *PartitionInfo);
|
IN struct _SET_PARTITION_INFORMATION_EX *PartitionInfo);
|
||||||
|
|
||||||
NTKERNELAPI
|
|
||||||
VOID
|
|
||||||
NTAPI
|
|
||||||
IoSetShareAccess(
|
|
||||||
IN ACCESS_MASK DesiredAccess,
|
|
||||||
IN ULONG DesiredShareAccess,
|
|
||||||
IN OUT PFILE_OBJECT FileObject,
|
|
||||||
OUT PSHARE_ACCESS ShareAccess);
|
|
||||||
|
|
||||||
NTKERNELAPI
|
|
||||||
VOID
|
|
||||||
NTAPI
|
|
||||||
IoSetStartIoAttributes(
|
|
||||||
IN PDEVICE_OBJECT DeviceObject,
|
|
||||||
IN BOOLEAN DeferredStartIo,
|
|
||||||
IN BOOLEAN NonCancelable);
|
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -2916,48 +2790,8 @@ NTAPI
|
||||||
IoSetThreadHardErrorMode(
|
IoSetThreadHardErrorMode(
|
||||||
IN BOOLEAN EnableHardErrors);
|
IN BOOLEAN EnableHardErrors);
|
||||||
|
|
||||||
/*
|
|
||||||
* USHORT
|
|
||||||
* IoSizeOfIrp(
|
|
||||||
* IN CCHAR StackSize)
|
|
||||||
*/
|
|
||||||
#define IoSizeOfIrp(_StackSize) \
|
|
||||||
((USHORT) (sizeof(IRP) + ((_StackSize) * (sizeof(IO_STACK_LOCATION)))))
|
|
||||||
|
|
||||||
/*
|
|
||||||
* VOID
|
|
||||||
* IoSkipCurrentIrpStackLocation(
|
|
||||||
* IN PIRP Irp)
|
|
||||||
*/
|
|
||||||
#define IoSkipCurrentIrpStackLocation(_Irp) \
|
|
||||||
{ \
|
|
||||||
(_Irp)->CurrentLocation++; \
|
|
||||||
(_Irp)->Tail.Overlay.CurrentStackLocation++; \
|
|
||||||
}
|
|
||||||
|
|
||||||
NTKERNELAPI
|
|
||||||
VOID
|
|
||||||
NTAPI
|
|
||||||
IoStartNextPacket(
|
|
||||||
IN PDEVICE_OBJECT DeviceObject,
|
|
||||||
IN BOOLEAN Cancelable);
|
|
||||||
|
|
||||||
NTKERNELAPI
|
|
||||||
VOID
|
|
||||||
NTAPI
|
|
||||||
IoStartNextPacketByKey(
|
|
||||||
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);
|
|
||||||
|
|
||||||
NTKERNELAPI
|
NTKERNELAPI
|
||||||
VOID
|
VOID
|
||||||
|
|
Loading…
Reference in a new issue