Função UrsDeviceInitialize (ursdevice.h)
Inicializa um objeto de dispositivo de estrutura para dar suporte a operações relacionadas a um controlador de função dupla USB e registra as funções de retorno de chamada de evento relevantes com a extensão de classe de controlador de função dupla USB.
Sintaxe
NTSTATUS UrsDeviceInitialize(
[in] WDFDEVICE Device,
[in] PURS_CONFIG Config
);
Parâmetros
[in] Device
Um identificador para o objeto de dispositivo de estrutura que o driver cliente recuperou na chamada anterior para WdfDeviceCreate.
[in] Config
Um ponteiro para uma estrutura URS_CONFIG que o driver do cliente inicializou chamando URS_CONFIG_INIT.
Retornar valor
O método retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, esse método poderá retornar um código de erro NTSTATUS apropriado.
Comentários
O driver do cliente para o controlador de função dupla USB deve chamar esse método após a chamada WdfDeviceCreate .
O driver do cliente chama esse método em sua implementação EvtDriverDeviceAdd .
Durante essa chamada, as implementações de retorno de chamada de evento fornecidas pelo driver do cliente também são registradas definindo os membros apropriados de URS_CONFIG.
O método cria listas de recursos para funções de host e função e as filas necessárias para lidar com solicitações IOCTL enviadas ao controlador. Com cada operação de comutador de função, a pilha de dispositivo filho da função atual é interrompida e a pilha do dispositivo para a nova função é carregada. O método UrsDeviceInitialize recupera informações de identificação usadas para compilar essas pilhas de dispositivos. O método também recupera informações sobre o dispositivo do barramento subjacente, como ACPI.
Exemplos
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;
}
...
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 10 |
Servidor mínimo com suporte | Windows Server 2016 |
Plataforma de Destino | Windows |
Versão mínima do KMDF | 1.15 |
Cabeçalho | ursdevice.h (inclua Urscx.h) |
Biblioteca | Urscxstub.lib |
IRQL | PASSIVE_LEVEL |