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 |