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 |