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 di UCX_CONTROLLER_CONFIG allocata dal chiamante inizializzata dal driver client chiamando UCX_CONTROLLER_CONFIG_INIT. La struttura contiene le 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 per il 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 appropriato NTSTATUS.

Osservazioni

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 dispositivo framework.

Durante questa chiamata, vengono registrate anche le implementazioni di callback degli eventi fornite dal driver client. Fornire puntatori di funzione a tali funzioni impostando i 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.

Esempi


    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;

Fabbisogno

Requisito Valore
client minimo supportato Windows 10
piattaforma di destinazione Finestre
versione minima di KMDF 1.0
versione minima di UMDF 2.0
intestazione ucxcontroller.h (include Ucxclass.h)
IRQL PASSIVE_LEVEL

Vedere anche

WdfDeviceCreare