IoAllocateController-Funktion (ntddk.h)

Die IoAllocateController-Routine richtet den Aufruf einer vom Treiber bereitgestellten ControllerControl-Routine ein, sobald der Gerätecontroller, der durch das angegebene Controllerobjekt dargestellt wird, verfügbar ist, um einen E/A-Vorgang für das Zielgerät auszuführen, der durch das angegebene Geräteobjekt dargestellt wird.

Syntax

void IoAllocateController(
  [in]           PCONTROLLER_OBJECT ControllerObject,
  [in]           PDEVICE_OBJECT     DeviceObject,
  [in]           PDRIVER_CONTROL    ExecutionRoutine,
  [in, optional] PVOID              Context
);

Parameter

[in] ControllerObject

Zeiger auf ein vom Treiber erstelltes Controllerobjekt, das in der Regel einen physischen Controller darstellt, der für einen E/A-Vorgang auf einem angefügten Gerät zugeordnet werden soll.

[in] DeviceObject

Zeiger auf das Geräteobjekt, das das Zielgerät des aktuellen IRP darstellt.

[in] ExecutionRoutine

Zeiger auf die vom Treiber bereitgestellte ControllerControl-Routine .

[in, optional] Context

Zeiger auf einen vom Treiber bestimmten Kontext, der an die ControllerControl-Routine des Treibers übergeben wird, wenn er aufgerufen wird.

Rückgabewert

Keine

Bemerkungen

Diese Routine behält sich den exklusiven Zugriff auf den Hardwarecontroller für das angegebene Gerät vor.

Die ControllerControl-Routine gibt einen Wert zurück, der angibt, ob der Controller dem Gerät zugeordnet bleibt, entweder DeallocateObject oder KeepObject. Wenn KeepObject zurückgegeben wird, muss der Treiber anschließend IoFreeController aufrufen, um das Controllerobjekt freizugeben.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 2000.
Zielplattform Universell
Header ntddk.h (include Ntddk.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL DISPATCH_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), IrqlDispatch(storport), IrqlDispatch(storport), IrqlDispatch(wdm), SpNoWait(storport), StorPortStartIo(storport)

Weitere Informationen

ControllerControl

IoCreateController

IoDeleteController

IoFreeController