Funzione UrsDeviceInitialize (ursdevice.h)
Inizializza un oggetto dispositivo framework per supportare le operazioni correlate a un controller a doppio ruolo USB e registra le funzioni di callback degli eventi pertinenti con l'estensione della classe controller a doppio ruolo USB.
Sintassi
NTSTATUS UrsDeviceInitialize(
[in] WDFDEVICE Device,
[in] PURS_CONFIG Config
);
Parametri
[in] Device
Handle per l'oggetto dispositivo framework recuperato dal driver client nella chiamata precedente a WdfDeviceCreate.
[in] Config
Puntatore a una struttura URS_CONFIG inizializzata dal driver client chiamando URS_CONFIG_INIT.
Valore restituito
Il metodo restituisce STATUS_SUCCESS se l'operazione ha esito positivo. In caso contrario, questo metodo potrebbe restituire un codice di errore NTSTATUS appropriato.
Commenti
Il driver client per il controller a doppio ruolo USB deve chiamare questo metodo dopo la chiamata WdfDeviceCreate .
Il driver client chiama questo metodo nell'implementazione EvtDriverDeviceAdd .
Durante questa chiamata, le implementazioni di callback degli eventi fornite dal driver client vengono registrate anche impostando i membri appropriati di URS_CONFIG.
Il metodo crea elenchi di risorse per i ruoli host e di funzione e le code necessarie per gestire le richieste IOCTL inviate al controller. Con ogni operazione di cambio di ruolo, lo stack di dispositivi figlio del ruolo corrente viene eliminato e lo stack di dispositivi per il nuovo ruolo viene caricato. Il metodo UrsDeviceInitialize recupera le informazioni di identificazione usate per compilare tali stack di dispositivi. Il metodo recupera anche informazioni sul dispositivo dal bus sottostante, ad esempio ACPI.
Esempio
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;
}
...
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 10 |
Server minimo supportato | Windows Server 2016 |
Piattaforma di destinazione | Windows |
Versione KMDF minima | 1.15 |
Intestazione | ursdevice.h (include Urscx.h) |
Libreria | Urscxstub.lib |
IRQL | PASSIVE_LEVEL |