UcxControllerCreate, fonction (ucxcontroller.h)
Crée un objet de contrôleur d’hôte.
Syntaxe
NTSTATUS UcxControllerCreate(
[in] WDFDEVICE Device,
[in] PUCX_CONTROLLER_CONFIG Config,
[in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
[out] UCXCONTROLLER *Controller
);
Paramètres
[in] Device
Handle de l’objet de périphérique d’infrastructure que le pilote client a récupéré lors de l’appel précédent à WdfDeviceCreate.
[in] Config
Pointeur vers une structure de UCX_CONTROLLER_CONFIG allouée par l’appelant que le pilote client a initialisée en appelant UCX_CONTROLLER_CONFIG_INIT. La structure contient les informations de configuration requises pour créer l’objet .
[in, optional] Attributes
Pointeur vers une structure de WDF_OBJECT_ATTRIBUTES allouée par l’appelant qui spécifie des attributs pour l’objet contrôleur.
[out] Controller
Pointeur vers une variable qui reçoit un handle vers le nouvel objet de contrôleur.
Valeur retournée
La méthode retourne STATUS_SUCCESS si l’opération réussit. Sinon, cette méthode peut retourner un code d’erreur NTSTATUS approprié.
Remarques
Le pilote client du contrôleur hôte doit appeler cette méthode après l’appel WdfDeviceCreate . Le parent du nouvel objet de contrôleur hôte est l’objet d’appareil d’infrastructure.
Pendant cet appel, les implémentations de rappel d’événements fournis par le pilote client sont également inscrites. Fournissez des pointeurs de fonction vers ces fonctions en appelant les membres appropriés de UCX_CONTROLLER_CONFIG.
Si le type parent est PCI, initialisez le UCX_CONTROLLER_CONFIG en appelant UCX_CONTROLLER_CONFIG_SET_PCI_INFO. Si le parent est ACPI, appelez UCX_CONTROLLER_CONFIG_SET_ACPI_INFO à la place.
La méthode crée différentes files d’attente nécessaires pour gérer les requêtes IOCTL envoyées au périphérique USB.
La méthode enregistre une interface d’appareil GUID_DEVINTERFACE_USB_HOST_CONTROLLER et un lien symbolique afin que les composants en mode utilisateur puissent ouvrir un handle au contrôleur.
Exemples
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;
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 10 |
Plateforme cible | Windows |
Version KMDF minimale | 1.0 |
Version UMDF minimale | 2.0 |
En-tête | ucxcontroller.h (inclure Ucxclass.h) |
IRQL | PASSIVE_LEVEL |