Compartilhar via


IOCTL_ACPI_ENUM_CHILDREN IOCTL (acpiioct.h)

A solicitação de controle de dispositivo IOCTL_ACPI_ENUM_CHILDREN pode ser usada para enumerar o caminho e o nome dos dispositivos ou objetos filho nomeados no namespace ACPI do dispositivo para o qual essa solicitação é enviada. Um driver deve chamar IoBuildDeviceIoControlRequest e passar os seguintes parâmetros de entrada e saída para compilar essa solicitação.

Código principal

IRP_MJ_DEVICE_CONTROL

Buffer de entrada

Defina os parâmetros de entrada IoBuildDeviceIoControlRequest da seguinte maneira:

  • IoControlCode está definido como IOCTL_ACPI_ENUM_CHILDREN.
  • DeviceObject é definido como um ponteiro para o PDO (objeto de dispositivo físico) do dispositivo.
  • InputBuffer é definido como um ponteiro para uma estrutura de ACPI_ENUM_CHILDREN_INPUT_BUFFER de comprimento variável.
  • InputBufferLength é definido como o tamanho, em bytes, do buffer de entrada fornecido pelo InputBuffer.
  • OutputBufferLength fornece o tamanho, em bytes, do buffer de saída fornecido por OutputBuffer.
  • InternalDeviceIoControl está definido como false.
  • de eventos é definido como um ponteiro para um objeto de evento alocado pelo chamador e inicializado.

Comprimento do buffer de entrada

InputBufferLength é definido como o tamanho, em bytes, do buffer de entrada fornecido pelo InputBuffer.

Buffer de saída

Defina os parâmetros de saída IoBuildDeviceIoControlRequest da seguinte maneira:

  • OutputBuffer fornece um ponteiro para uma estrutura de ACPI_ENUM_CHILDREN_OUTPUT_BUFFER de comprimento variável na qual o driver ACPI retorna o caminho e o nome dos dispositivos filho enumerados.
  • IoStatusBlock está definido como uma estrutura de IO_STATUS_BLOCK.

Comprimento do buffer de saída

OutputBufferLength fornece o tamanho, em bytes, do buffer de saída fornecido por OutputBuffer.

Bloco de status

Se a solicitação for bem-sucedida, IoStatusBlock –>Status será definido como STATUS_SUCCESS; caso contrário, o membro status é definido como um código de erro. Se o buffer de saída não for grande o suficiente para conter o cabeçalho do buffer, o membro status do será definido como STATUS_BUFFER_TOO_SMALL. Se o buffer de saída for grande o suficiente para conter o cabeçalho do buffer de saída, mas não for grande o suficiente para conter os caminhos e nomes de todos os objetos filho enumerados, o membro status será definido como STATUS_BUFFER_OVERFLOW e OutputBuffer -> NumberOfChildren é definido como o comprimento necessário do buffer de saída.

Se a solicitação for bem-sucedida, o IoStatusBlock –>Membro do de Informações será definido como o número de bytes retornados no buffer de saída; caso contrário, o membro de Informações do é definido como zero.

Observações

IOCTL_ACPI_ENUM_CHILDREN retorna uma estrutura de ACPI_ENUM_CHILDREN_OUTPUT_BUFFER de comprimento variável que contém uma matriz de estruturas de ACPI_ENUM_CHILD de comprimento variável, cada uma das quais retorna o caminho totalmente qualificado e o nome de um objeto no namespace ACPI do dispositivo para o qual a solicitação foi enviada. Os objetos que essa solicitação enumera dependem da configuração do Flags membro da estrutura de entrada fornecida ACPI_ENUM_CHILDREN_INPUT_BUFFER, da seguinte maneira:

Se o buffer de saída alocado pelo driver não for grande o suficiente para retornar todos os nomes filho solicitados, o driver ACPI não retornará nomes filho e definirá o status membro do IO_STATUS_BLOCK para que a solicitação STATUS_BUFFER_OVERFLOW. Nesse caso, se o tamanho, em bytes, do buffer de saída for pelo menos tamanho de(ACPI_ENUM_CHILDREN_OUTPUT_BUFFER_SIGNATURE), o driver ACPI também definirá NumberOfChildren para o tamanho, em bytes, que é necessário para recuperar os caminhos e nomes solicitados.

Um driver normalmente usaria uma sequência de duas solicitações IOCTL_ACPI_ENUM_CHILDREN para enumerar os objetos filho de interesse. O driver envia a primeira solicitação para obter o tamanho do buffer de saída necessário para conter o caminho e o nome de todos os objetos solicitados. O driver envia a segunda solicitação para retornar o caminho e o nome dos objetos no buffer de saída.

Para obter mais informações sobre como enumerar dispositivos filho de um dispositivo, consulte Enumerando dispositivos filho e métodos de controle.

IOCTL_ACPI_ENUM_CHILDREN pode ser usado somente em< DISPATCH_LEVEL IRQL.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows Vista e versões posteriores do Windows.
cabeçalho acpiioct.h (include Acpiioct.h)

Consulte também

ACPI_ENUM_CHILD

ACPI_ENUM_CHILDREN_INPUT_BUFFER

ACPI_ENUM_CHILDREN_OUTPUT_BUFFER