Compartilhar via


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

Consulte também

URS_CONFIG

URS_CONFIG_INIT