Freigeben über


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

Weitere Informationen

WdfDeviceCreate