INFO: IoMarkIrpPending(Irp) vs. IoStatus.Status=STATUS_PENDINGID: Q180589
|
This article explains the difference between IoMarkIrpPending(Irp), IoStatus.Status=STATUS_PENDING, and return STATUS_PENDING.
To see exactly what IoMarkIrpPending does, look at the following definition
in NTDDK.H:
// VOID
// IoMarkIrpPending(
// IN OUT PIRP Irp
// )
//
// Routine Description:
//
// This routine marks the specified I/O Request Packet (IRP) to indicate
// that an initial status of STATUS_PENDING was returned to the caller.
// This is used so that I/O completion can determine whether or not to
// fully complete the I/O operation requested by the packet.
//
// Arguments:
//
// Irp - Pointer to the I/O Request Packet to be marked pending.
//
// Return Value:
//
// None.
//
//--
#define IoMarkIrpPending( Irp ) ( \
IoGetCurrentIrpStackLocation( (Irp) )->Control |=
SL_PENDING_RETURNED )
Keywords : NTDDKKMode
Version : WINNT:4.0
Platform : winnt
Issue type : kbinfo
Last Reviewed: March 5, 1999