UcxControllerCreate-Funktion (ucxcontroller.h)
Erstellt ein Hostcontrollerobjekt.
Syntax
NTSTATUS UcxControllerCreate(
[in] WDFDEVICE Device,
[in] PUCX_CONTROLLER_CONFIG Config,
[in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
[out] UCXCONTROLLER *Controller
);
Parameter
[in] Device
Ein Handle für das Framework-Geräteobjekt, das der Clienttreiber im vorherigen Aufruf von WdfDeviceCreate abgerufen hat.
[in] Config
Ein Zeiger auf eine vom Aufrufer zugewiesene UCX_CONTROLLER_CONFIG Struktur, die der Clienttreiber durch Aufrufen UCX_CONTROLLER_CONFIG_INIT initialisiert hat. Die Struktur enthält Konfigurationsinformationen, die zum Erstellen des Objekts erforderlich sind.
[in, optional] Attributes
Ein Zeiger auf eine vom Aufrufer zugewiesene WDF_OBJECT_ATTRIBUTES-Struktur , die Attribute für das Controllerobjekt angibt.
[out] Controller
Ein Zeiger auf eine Variable, die ein Handle auf das neue Controllerobjekt empfängt.
Rückgabewert
Die Methode gibt STATUS_SUCCESS zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt diese Methode möglicherweise einen entsprechenden NTSTATUS-Fehlercode zurück.
Hinweise
Der Clienttreiber für den Hostcontroller muss diese Methode nach dem WdfDeviceCreate-Aufruf aufrufen. Das übergeordnete Element des neuen Hostcontrollerobjekts ist das Framework-Geräteobjekt.
Während dieses Aufrufs werden auch die vom Clienttreiber bereitgestellten Ereignisrückrufimplementierungen registriert. Stellen Sie Funktionszeiger auf diese Funktionen bereit, indem Sie entsprechende Member von UCX_CONTROLLER_CONFIG aufrufen.
Wenn der übergeordnete Typ PCI ist, initialisieren Sie den UCX_CONTROLLER_CONFIG , indem Sie UCX_CONTROLLER_CONFIG_SET_PCI_INFO aufrufen. Wenn das übergeordnete Element ACPI ist, rufen Sie stattdessen UCX_CONTROLLER_CONFIG_SET_ACPI_INFO auf.
Die -Methode erstellt verschiedene Warteschlangen, die zum Verarbeiten von an das USB-Gerät gesendeten IOCTL-Anforderungen erforderlich sind.
Die -Methode registriert eine Geräteschnittstelle GUID_DEVINTERFACE_USB_HOST_CONTROLLER und symbolischer Verknüpfung, sodass Benutzermoduskomponenten ein Handle für den Controller öffnen können.
Beispiele
WDF_OBJECT_ATTRIBUTES objectAttributes;
UCX_CONTROLLER_CONFIG ucxControllerConfig;
UCXCONTROLLER ucxController;
PUCX_CONTROLLER_CONTEXT ucxControllerContext;
// Create the controller
//
UCX_CONTROLLER_CONFIG_INIT(&ucxControllerConfig, "");
ucxControllerConfig.EvtControllerUsbDeviceAdd = UsbDevice_EvtControllerUsbDeviceAdd;
ucxControllerConfig.EvtControllerQueryUsbCapability = Controller_EvtControllerQueryUsbCapability;
ucxControllerConfig.EvtControllerReset = Controller_EvtControllerReset;
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&objectAttributes, UCX_CONTROLLER_CONTEXT);
status = UcxControllerCreate(wdfDevice,
&ucxControllerConfig,
&objectAttributes,
&ucxController);
if (!NT_SUCCESS(status)) {
DbgTrace(TL_ERROR, Controller, "UcxControllerCreate Failed %!STATUS!", status);
goto Controller_WdfEvtDeviceAddEnd;
}
DbgTrace(TL_INFO, Controller, "UCX Controller created.");
controllerContext->UcxController = ucxController;
ucxControllerContext = GetUcxControllerContext(ucxController);
ucxControllerContext->WdfDevice = wdfDevice;
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 10 |
Zielplattform | Windows |
KMDF-Mindestversion | 1.0 |
UMDF-Mindestversion | 2.0 |
Kopfzeile | ucxcontroller.h (include Ucxclass.h) |
IRQL | PASSIVE_LEVEL |