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 da estrutura que o driver cliente recuperou na chamada anterior para WdfDeviceCreate.
[in] Config
Um ponteiro para uma estrutura de URS_CONFIG que o driver cliente inicializou chamando URS_CONFIG_INIT.
Valor de retorno
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.
Observações
O driver cliente do controlador de função dupla USB deve chamar esse método após a chamada WdfDeviceCreate.
O driver cliente chama esse método em seu implementação de 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 do 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 que são 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 de dispositivos para a nova função é carregada. O método UrsDeviceInitialize recupera informações de identificação usadas para criar 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 |
---|---|
de cliente com suporte mínimo | Windows 10 |
servidor com suporte mínimo | Windows Server 2016 |
da 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 |