Freigeben über


IofCallDriver-Funktion (wdm.h)

Vorsicht

Rufen Sie stattdessen IoCallDriver- an.

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-Wertzurück.

Bemerkungen

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

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

Ein IRP, das in einem Aufruf von IoCallDriver übergeben wird, kann nicht auf den Treiber höherer Ebene zugreifen, es sei denn, der Treiber der höheren Ebene hat IoSetCompletionRoutine aufgerufen, um eine IoCompletion- Routine für das IRP einzurichten. Wenn ja, weist die IRP-Eingabe an die IoCompletion-Routine den E/A-Statusblock auf, der von den niedrigeren Treibern festgelegt wird, und alle I/O-Stapelpositionen von Treibern auf niedrigerer Ebene sind mit Nullen gefüllt.

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

Weitere Informationen finden Sie unter Calling IoCallDriver vs. Calling PoCallDriver.

Anforderungen

Anforderung Wert
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library 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

Siehe auch

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoSetCompletionRoutine

PoCallDriver-