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 WdfDeviceCreateabgerufen hat.

[in] Config

Ein Zeiger auf eine vom Aufrufer zugewiesene UCX_CONTROLLER_CONFIG Struktur, die der Clienttreiber durch Aufrufen von 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 für 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 geeigneten NTSTATUS Fehlercode zurück.

Bemerkungen

Der Clienttreiber für den Hostcontroller muss diese Methode aufrufen, nachdem der WdfDeviceCreate Aufruf aufgerufen wurde. Das übergeordnete Objekt 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 die entsprechenden Member von UCX_CONTROLLER_CONFIGaufrufen.

Wenn der übergeordnete Typ PCI ist, initialisieren Sie die UCX_CONTROLLER_CONFIG, indem Sie UCX_CONTROLLER_CONFIG_SET_PCI_INFOaufrufen. 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 IOCTL-Anforderungen erforderlich sind, die an das USB-Gerät gesendet werden.

Die Methode registriert eine Geräteschnittstelle GUID_DEVINTERFACE_USB_HOST_CONTROLLER und symbolische 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
mindestens unterstützte Client- Windows 10
Zielplattform- Fenster
Minimale KMDF-Version 1.0
Mindest-UMDF-Version 2.0
Header- ucxcontroller.h (include Ucxclass.h)
IRQL- PASSIVE_LEVEL

Siehe auch

WdfDeviceCreate