IofCallDriver-Funktion (wdm.h)

Achtung

Rufen Sie stattdessen IoCallDriver auf.

Sendet ein IRP an den Treiber, der einem angegebenen Geräteobjekt zugeordnet ist.

Syntax

NTSTATUS IofCallDriver(
  PDEVICE_OBJECT        DeviceObject,
  __drv_aliasesMem PIRP Irp
);

Parameter

DeviceObject

Zeiger auf ein Geräteobjekt, das das Zielgerät für den angeforderten E/A-Vorgang darstellt.

Irp

Zeiger auf die IRP.

Rückgabewert

Gibt einen geeigneten NTSTATUS-Wert zurück.

Hinweise

Vor dem Aufrufen von IoCallDriver muss der aufrufende Treiber den E/A-Stapelspeicherort im IRP für den Zieltreiber einrichten. Weitere Informationen finden Sie unter Übergeben von IRPs im Treiberstapel.

IoCallDriver weist den DeviceObject-Eingabeparameter dem DeviceObject-Member der IO_STACK_LOCATION-Struktur für den aufgerufenen Treiber zu.

Ein IRP, das in einem Aufruf von IoCallDriver übergeben wird, kann für den Treiber auf höherer Ebene nicht mehr zugegriffen werden, es sei denn, der Treiber auf höherer Ebene hat IoSetCompletionRoutine aufgerufen, um eine IoCompletion-Routine für das IRP einzurichten. Wenn dies der Fall ist, verfügt die IRP-Eingabe für die IoCompletion-Routine über den E/A-status block, der von den niedrigeren Treibern festgelegt wird, und alle E/A-Stapelspeicherorte der niedrigeren Treiberebene werden mit Nullen gefüllt.

Treiber für Windows Server 2003, Windows XP und Windows 2000 müssen PoCallDriver anstelle von IoCallDriver verwenden, um Power IRPs (IRP_MJ_POWER) zu übergeben.

Weitere Informationen finden Sie unter Calling IoCallDriver vs. Calling PoCallDriver.For more information, see Calling IoCallDriver vs. Calling PoCallDriver.

Anforderungen

Anforderung Wert
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= DISPATCH_LEVEL
DDI-Complianceregeln CompleteRequestStatusCheck, CompletionRoutineRegistered, DeleteDevice, ForwardedAtBadIrql, ForwardedAtBadIrqlAllocate, ForwardedAtBadIrqlFsdAsync, ForwardedAtBadIrqlFsdSync, HwStorPortProhibitedDIs(storport), IoAllocateForward, IoAllocateIrpSignalEventInCompletionTimeout, IoBuildDeviceControlWait, IoBuildDeviceControlWaitTimeout, IoBuildFsdForward, IoBuildSynchronousFsdRequestWait, IoBuildSynchronousFsdRequestWaitTimeout, IoSetCompletionRoutineExCheck, IrpProcessingComplete, LowerDriverReturn, MarkDevicePower, MarkingQueuedIrps, MarkIrpPending, MarkIrpPending2, MarkPower(wdm), MarkPowerDown(wdm), MarkQueryRelations(wdm), MarkStartDevice(wdm), PendedCompletedRequest, PendedCompletedRequest2, PendedCompletedRequest3, PendedCompletedRequestEx, PnpIrpCompletion, PowerDownFail, PowerUpFail, RemoveLockForward, RemoveLockForward2, RemoveLockForwardDeviceControl, RemoveLockForwardDeviceControl2, RemoveLockForwardDeviceControlInternal, RemoveLockForwardDeviceControlInternal2, RemoveLockForwardRead, RemoveLockForwardRead2, RemoveLockForwardWrite, RemoveLockForwardWrite2, RemoveLockMnRemove2, RemoveLockMnSurpriseRemove, RemoveLockQueryMnRemove, TargetRelationNeedsRef, WmiForward

Weitere Informationen

IoAllocateIrp

IoBuildAsynchronfsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoSetCompletionRoutine

PoCallDriver