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 |