Freigeben über


UrsDeviceInitialize-Funktion (ursdevice.h)

Initialisiert ein Framework-Geräteobjekt zur Unterstützung von Vorgängen im Zusammenhang mit einem USB-Dual-Role-Controller und registriert die relevanten Ereignisrückruffunktionen mit der Erweiterung der USB-Dual-Role-Controllerklasse.

Syntax

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

Parameter

[in] Device

Ein Handle für das Framework-Geräteobjekt, das der Clienttreiber im vorherigen Aufruf von WdfDeviceCreateabgerufen hat.

[in] Config

Ein Zeiger auf eine URS_CONFIG Struktur, die der Clienttreiber durch Aufrufen von URS_CONFIG_INITinitialisiert hat.

Rückgabewert

Die Methode gibt STATUS_SUCCESS zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt diese Methode möglicherweise einen geeigneten NTSTATUS Fehlercode zurück.

Bemerkungen

Der Clienttreiber für den USB-Dual-Role-Controller muss diese Methode nach dem WdfDeviceCreate Aufruf aufrufen.

Der Clienttreiber ruft diese Methode in seiner EvtDriverDeviceAdd Implementierung auf.

Während dieses Aufrufs werden die vom Clienttreiber bereitgestellten Ereignisrückrufimplementierungen auch registriert, indem geeignete Member von URS_CONFIGfestgelegt werden.

Die Methode erstellt Ressourcenlisten für Host- und Funktionsrollen und die Warteschlangen, die zum Verarbeiten von IOCTL-Anforderungen erforderlich sind, die an den Controller gesendet werden. Bei jedem Rollenwechselvorgang wird der untergeordnete Gerätestapel der aktuellen Rolle heruntergerissen, und der Gerätestapel für die neue Rolle wird geladen. Die UrsDeviceInitialize Methode ruft identifizierende Informationen ab, die zum Erstellen dieser Gerätestapel verwendet werden. Die Methode ruft auch Informationen über das Gerät aus dem zugrunde liegenden Bus ab, z. B. ACPI.

Beispiele



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;

    }

...

}

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 10
mindestens unterstützte Server- Windows Server 2016
Zielplattform- Fenster
Minimale KMDF-Version 1.15
Header- ursdevice.h (include Urscx.h)
Library Urscxstub.lib
IRQL- PASSIVE_LEVEL

Siehe auch

URS_CONFIG

URS_CONFIG_INIT