UcxControllerCreate, fonction (ucxcontroller.h)
Crée un objet de contrôleur 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 d’appareil framework que le pilote client a récupéré lors de l’appel précédent à WdfDeviceCreate.
[in] Config
Pointeur vers une structure UCX_CONTROLLER_CONFIG allouée par l’appelant que le pilote client a initialisée en appelant UCX_CONTROLLER_CONFIG_INIT. La structure contient des informations de configuration requises pour créer l’objet.
[in, optional] Attributes
Pointeur vers une structure WDF_OBJECT_ATTRIBUTES allouée par l’appelant qui spécifie les attributs de l’objet contrôleur.
[out] Controller
Pointeur vers une variable qui reçoit un handle vers le nouvel objet contrôleur.
Valeur de retour
La méthode retourne STATUS_SUCCESS si l’opération réussit. Sinon, cette méthode peut retourner une appropriée code d’erreur NTSTATUS.
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 framework.
Pendant cet appel, les implémentations de rappel d’événements fournies par le pilote client sont également inscrites. Fournissez des pointeurs de fonction à 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 requises pour gérer les demandes IOCTL envoyées au périphérique USB.
La méthode inscrit 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;
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 10 |
plateforme cible | Windows |
version minimale de KMDF | 1.0 |
version minimale de UMDF | 2.0 |
d’en-tête | ucxcontroller.h (include Ucxclass.h) |
IRQL | PASSIVE_LEVEL |