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

Confira também

URS_CONFIG

URS_CONFIG_INIT