Partager via


UrsDeviceInitialize, fonction (ursdevice.h)

Initialise un objet d’appareil framework pour prendre en charge les opérations liées à un contrôleur à double rôle USB et inscrit les fonctions de rappel d’événements pertinentes avec l’extension de classe de contrôleur de double rôle USB.

Syntaxe

NTSTATUS UrsDeviceInitialize(
  [in] WDFDEVICE   Device,
  [in] PURS_CONFIG Config
);

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 URS_CONFIG initialisée par le pilote client en appelant URS_CONFIG_INIT.

Valeur de retour

La méthode retourne STATUS_SUCCESS si l’opération réussit. Dans le cas contraire, cette méthode peut retourner un code d’erreur NTSTATUS approprié .

Remarques

Le pilote client pour le contrôleur à double rôle USB doit appeler cette méthode après l’appel WdfDeviceCreate.

Le pilote client appelle cette méthode dans son implémentation EvtDriverDeviceAdd.

Pendant cet appel, les implémentations de rappel d’événements fournies par le pilote client sont également inscrites en définissant les membres appropriés de URS_CONFIG.

La méthode crée des listes de ressources pour les rôles d’hôte et de fonction et les files d’attente requises pour gérer les requêtes IOCTL envoyées au contrôleur. Avec chaque opération de changement de rôle, la pile d’appareils enfant du rôle actuel est détruite et la pile d’appareils pour le nouveau rôle est chargée. La méthode UrsDeviceInitialize récupère les informations d’identification utilisées pour générer ces piles d’appareils. La méthode récupère également des informations sur l’appareil à partir du bus sous-jacent, comme ACPI.

Exemples



EVT_URS_DEVICE_FILTER_RESOURCE_REQUIREMENTS EvtUrsFilterResourceRequirements;
EVT_URS_SET_ROLE EvtUrsSetRole;

EvtDriverDeviceAdd (
    _In_ WDFDRIVER Driver,
    _Inout_ PWDFDEVICE_INIT DeviceInit
    )
{
...

    WDFDEVICE device;
    NTSTATUS status;
    WDF_OBJECT_ATTRIBUTES attributes;
    URS_CONFIG ursConfig;
...
 
    status = UrsDeviceInitInitialize(DeviceInit);
    if (!NT_SUCCESS(status)) {
        //UrsDeviceInitInitialize failed.
        return status;
    }
   
    WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attributes, DRIVER_CONTEXT);
    status = WdfDeviceCreate(&DeviceInit, &attributes, &device);
    if (!NT_SUCCESS(status)) {
        // WdfDeviceCreate failed.
        return status;
    }
    URS_CONFIG_INIT(&ursConfig, UrsHostInterfaceTypeXhci, EvtUrsFilterResourceRequirements);
    
    ursConfig.EvtUrsSetRole = EvtUrsSetRole;
    status = UrsDeviceInitialize(device, &ursConfig);

    if (!NT_SUCCESS(status)) {
        // UrsDeviceInitialize failed.
        return status;

    }

...

}

Exigences

Exigence Valeur
client minimum pris en charge Windows 10
serveur minimum pris en charge Windows Server 2016
plateforme cible Windows
version minimale de KMDF 1.15
d’en-tête ursdevice.h (include Urscx.h)
bibliothèque Urscxstub.lib
IRQL PASSIVE_LEVEL

Voir aussi

URS_CONFIG

URS_CONFIG_INIT