Condividi tramite


Funzione UcxControllerCreate (ucxcontroller.h)

Crea un oggetto controller host.

Sintassi

NTSTATUS UcxControllerCreate(
  [in]           WDFDEVICE              Device,
  [in]           PUCX_CONTROLLER_CONFIG Config,
  [in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
  [out]          UCXCONTROLLER          *Controller
);

Parametri

[in] Device

Handle per l'oggetto dispositivo framework recuperato dal driver client nella chiamata precedente a WdfDeviceCreate.

[in] Config

Puntatore a una struttura UCX_CONTROLLER_CONFIG allocata dal chiamante che il driver client inizializzato chiamando UCX_CONTROLLER_CONFIG_INIT. La struttura contiene informazioni di configurazione necessarie per creare l'oggetto.

[in, optional] Attributes

Puntatore a una struttura WDF_OBJECT_ATTRIBUTES allocata dal chiamante che specifica gli attributi per l'oggetto controller.

[out] Controller

Puntatore a una variabile che riceve un handle al nuovo oggetto controller.

Valore restituito

Il metodo restituisce STATUS_SUCCESS se l'operazione ha esito positivo. In caso contrario, questo metodo potrebbe restituire un codice di errore NTSTATUS appropriato.

Commenti

Il driver client per il controller host deve chiamare questo metodo dopo la chiamata WdfDeviceCreate . L'elemento padre del nuovo oggetto controller host è l'oggetto del dispositivo framework.

Durante questa chiamata, vengono registrate anche le implementazioni di callback degli eventi forniti dal driver client. Fornire puntatori di funzione a tali funzioni impostando membri appropriati di UCX_CONTROLLER_CONFIG.

Se il tipo padre è PCI, inizializzare il UCX_CONTROLLER_CONFIG chiamando UCX_CONTROLLER_CONFIG_SET_PCI_INFO. Se l'elemento padre è ACPI , chiamare UCX_CONTROLLER_CONFIG_SET_ACPI_INFO .

Il metodo crea varie code necessarie per gestire le richieste IOCTL inviate al dispositivo USB.

Il metodo registra un'interfaccia del dispositivo GUID_DEVINTERFACE_USB_HOST_CONTROLLER e un collegamento simbolico in modo che i componenti della modalità utente possano aprire un handle al controller.

Esempio


    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;

Requisiti

Requisito Valore
Client minimo supportato Windows 10
Piattaforma di destinazione Windows
Versione KMDF minima 1.0
Versione UMDF minima 2,0
Intestazione ucxcontroller.h (includere Ucxclass.h)
IRQL PASSIVE_LEVEL

Vedi anche

WdfDeviceCreate