IOCTL_ACPI_GET_DEVICE_INFORMATION IOCTL (acpiioct.h)

Un driver per un dispositivo può usare la richiesta di controllo del dispositivo IOCTL_ACPI_GET_DEVICE_INFORMATION per ottenere informazioni di identificazione con granularità fine sul dispositivo. Questo IOCTL viene in genere usato dai driver che supportano più versioni o revisioni di un dispositivo e devono esaminare le parti del componente che costituiscono la stringa ID HW del dispositivo per identificare l'esatto dispositivo. Il driver deve chiamare IoBuildDeviceIoControlRequest e passare i parametri di input e output seguenti per compilare questa richiesta.

Codice principale

IRP_MJ_DEVICE_CONTROL

Buffer di input

Impostare i parametri di input IoBuildDeviceIoControlRequest come segue:

  • IoControlCode è impostato su IOCTL_ACPI_GET_DEVICE_INFORMATION.
  • DeviceObject è impostato su un puntatore all'oggetto dispositivo fisico (PDO) del dispositivo.
  • InputBuffer è impostato su un puntatore a una struttura del buffer di input che dipende dal tipo di argomenti di input da passare al metodo di controllo. Per altre informazioni sul tipo di argomenti di input supportati da questo IOCTL, vedere la sezione Osservazioni più avanti in questo argomento.
  • InputBufferLength è impostato sulle dimensioni, in byte, del buffer di input fornito da InputBuffer.
  • OutputBufferLength fornisce le dimensioni, in byte, del buffer di output fornito da OutputBuffer.
  • InternalDeviceIoControl è impostato su FALSE.
  • L'evento è impostato su NULL.

Lunghezza del buffer di input

InputBufferLength è impostato sulle dimensioni, in byte, del buffer di input fornito da InputBuffer.

Buffer di output

Impostare i parametri di output IoBuildDeviceIoControlRequest come segue:

Lunghezza del buffer di output

OutputBufferLength fornisce le dimensioni, in byte, del buffer di output fornito da OutputBuffer.

Blocco dello stato

Se la richiesta ha esito positivo, IoStatusBlock-Status> è impostato su STATUS_SUCCESS; in caso contrario, il membro Status viene impostato su un codice di errore. Se il buffer di output non è sufficientemente grande da contenere l'intestazione del buffer di output, il membro Status viene impostato su STATUS_BUFFER_TOO_SMALL. Se il buffer di output è sufficientemente grande da contenere l'intestazione del buffer di output, ma non è sufficientemente grande da contenere tutti gli argomenti di output del metodo di controllo, il membro Status viene impostato su STATUS_BUFFER_OVERFLOW e OutputBuffer-Length> è impostato sulla lunghezza richiesta del buffer di output.

Se la richiesta ha esito positivo, il membro IoStatusBlock-Information> viene impostato sul numero di byte restituiti nel buffer di output. In caso contrario, il membro Information viene impostato su zero.

Commenti

Un driver per un dispositivo può usare IOCTL_ACPI_GET_DEVICE_INFORMATION per ottenere informazioni di identificazione con granularità fine sul dispositivo. Questo IOCTL viene in genere usato con i driver che supportano più versioni hardware o revisioni di un dispositivo ed è necessario esaminare le parti del componente che costituiscono la stringa ID HW del dispositivo per identificare il dispositivo esatto. Ad esempio, un driver può supportare revisioni diverse dello stesso dispositivo, in cui alcuni aspetti dell'interfaccia di programma o del comportamento del dispositivo sono diversi. Il driver può identificare esattamente la revisione su cui è in esecuzione.

Gli argomenti di output della richiesta vengono restituiti nella struttura a lunghezza variabile ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER fornita dal puntatore OutBuffer . Il ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER include una matrice di matrici a lunghezza variabile, ognuna delle quali restituisce un argomento di output che rappresenta rispettivamente la stringa ID del sistema secondario, la stringa ID fornitore e la stringa ID istanza.

IOCTL_ACPI_GET_DEVICE_INFORMATION possono essere usati solo in IRQL <= DISPATCH_LEVEL.

Requisiti

Requisito Valore
Client minimo supportato Windows 8 e versioni successive di Windows.
Intestazione acpiioct.h (include Acpiioct.h)

Vedi anche

ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER