Compartilhar via


Função UcxControllerCreate (ucxcontroller.h)

Cria um objeto de controlador de host.

Sintaxe

NTSTATUS UcxControllerCreate(
  [in]           WDFDEVICE              Device,
  [in]           PUCX_CONTROLLER_CONFIG Config,
  [in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
  [out]          UCXCONTROLLER          *Controller
);

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 de UCX_CONTROLLER_CONFIG alocada pelo chamador que o driver do cliente inicializou chamando UCX_CONTROLLER_CONFIG_INIT. A estrutura contém informações de configuração necessárias para criar o objeto.

[in, optional] Attributes

Um ponteiro para uma estrutura de WDF_OBJECT_ATTRIBUTES alocada pelo chamador que especifica atributos para o objeto do controlador.

[out] Controller

Um ponteiro para uma variável que recebe um identificador para o novo objeto do controlador.

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 host deve chamar esse método após a chamada WdfDeviceCreate . O pai do novo objeto do controlador de host é o objeto do dispositivo de estrutura.

Durante essa chamada, as implementações de retorno de chamada de evento fornecidas pelo driver do cliente também são registradas. Forneça ponteiros de função para essas funções definindo os membros apropriados de UCX_CONTROLLER_CONFIG.

Se o tipo pai for PCI, inicialize o UCX_CONTROLLER_CONFIG chamando UCX_CONTROLLER_CONFIG_SET_PCI_INFO. Se o pai for ACPI, chame UCX_CONTROLLER_CONFIG_SET_ACPI_INFO .

O método cria várias filas necessárias para lidar com solicitações IOCTL enviadas ao dispositivo USB.

O método registra uma interface do dispositivo GUID_DEVINTERFACE_USB_HOST_CONTROLLER e um link simbólico para que os componentes do modo de usuário possam abrir um identificador para o controlador.

Exemplos


    WDF_OBJECT_ATTRIBUTES                   objectAttributes;
    UCX_CONTROLLER_CONFIG                   ucxControllerConfig;
    UCXCONTROLLER                           ucxController;
    PUCX_CONTROLLER_CONTEXT                 ucxControllerContext;

    // Create the controller
    //
    UCX_CONTROLLER_CONFIG_INIT(&ucxControllerConfig, "");
    ucxControllerConfig.EvtControllerUsbDeviceAdd = UsbDevice_EvtControllerUsbDeviceAdd;
    ucxControllerConfig.EvtControllerQueryUsbCapability = Controller_EvtControllerQueryUsbCapability;
    ucxControllerConfig.EvtControllerReset = Controller_EvtControllerReset;
    WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&objectAttributes, UCX_CONTROLLER_CONTEXT);
    
    status = UcxControllerCreate(wdfDevice,
        &ucxControllerConfig,
        &objectAttributes,
        &ucxController);

    if (!NT_SUCCESS(status)) {
        DbgTrace(TL_ERROR, Controller, "UcxControllerCreate Failed %!STATUS!", status);
        goto Controller_WdfEvtDeviceAddEnd;
    }

    DbgTrace(TL_INFO, Controller, "UCX Controller created.");

    controllerContext->UcxController = ucxController;

    ucxControllerContext = GetUcxControllerContext(ucxController);
    ucxControllerContext->WdfDevice = wdfDevice;

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10
Plataforma de Destino Windows
Versão mínima do KMDF 1.0
Versão mínima do UMDF 2,0
Cabeçalho ucxcontroller.h (inclua Ucxclass.h)
IRQL PASSIVE_LEVEL

Confira também

WdfDeviceCreate