Freigeben über


UrsDeviceInitialize-Funktion (ursdevice.h)

Initialisiert ein Framework-Geräteobjekt zur Unterstützung von Vorgängen im Zusammenhang mit einem USB-Controller mit dualer Rolle und registriert die relevanten Ereignisrückruffunktionen bei der USB-Controllerklassenerweiterung mit zwei Rollen.

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 WdfDeviceCreate abgerufen hat.

[in] Config

Ein Zeiger auf eine URS_CONFIG Struktur, die der Clienttreiber durch Aufrufen URS_CONFIG_INIT initialisiert 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.

Hinweise

Der Clienttreiber für den USB-Controller mit dualer Rolle muss diese Methode nach dem WdfDeviceCreate-Aufruf aufrufen.

Der Clienttreiber ruft diese Methode in seiner EvtDriverDeviceAdd-Implementierung auf.

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

Die -Methode erstellt Ressourcenlisten für Host- und Funktionsrollen sowie 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 abgerissen, 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
Unterstützte Mindestversion (Client) Windows 10
Unterstützte Mindestversion (Server) Windows Server 2016
Zielplattform Windows
KMDF-Mindestversion 1.15
Kopfzeile ursdevice.h (include Urscx.h)
Bibliothek Urscxstub.lib
IRQL PASSIVE_LEVEL

Weitere Informationen

URS_CONFIG

URS_CONFIG_INIT