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 |