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 |