IOCTL_ACPI_ASYNC_EVAL_METHOD_EX IOCTL(acpiioct.h)

디바이스용 드라이버는 IOCTL_ACPI_ASYNC_EVAL_METHOD_EX 디바이스 제어 요청을 사용하여 디바이스의 자식 디바이스에서 지원하는 ACPI 제어 메서드를 비동기적으로 평가할 수 있습니다. 드라이버는 IoBuildDeviceIoControlRequest 를 호출하고 다음 입력 및 출력 매개 변수를 전달하여 이 요청을 빌드해야 합니다.

주 코드

IRP_MJ_DEVICE_CONTROL

입력 버퍼

다음과 같이 IoBuildDeviceIoControlRequest 입력 매개 변수를 설정합니다.

  • IoControlCode 는 IOCTL_ACPI_ASYNC_EVAL_METHOD_EX 설정됩니다.
  • DeviceObject 는 디바이스의 PDO(물리적 디바이스 개체)에 대한 포인터로 설정됩니다.
  • InputBuffer 는 컨트롤 메서드에 전달할 입력 인수의 형식에 따라 달라지는 입력 버퍼 구조에 대한 포인터로 설정됩니다. 이 IOCTL에서 지원하는 형식 입력 인수에 대한 자세한 내용은 이 항목의 뒷부분에 있는 설명 섹션을 참조하세요.
  • InputBufferLengthInputBuffer에서 제공하는 입력 버퍼의 크기(바이트)로 설정됩니다.
  • OutputBufferLengthOutputBuffer에서 제공하는 출력 버퍼의 크기를 바이트 단위로 제공합니다.
  • InternalDeviceIoControlFALSE로 설정됩니다.
  • 이벤트가NULL로 설정됩니다.

입력 버퍼 길이

InputBufferLengthInputBuffer에서 제공하는 입력 버퍼의 크기(바이트)로 설정됩니다.

출력 버퍼

다음과 같이 IoBuildDeviceIoControlRequest 출력 매개 변수를 설정합니다.

  • OutputBuffer 는 컨트롤 메서드의 출력 인수를 포함하는 ACPI_EVAL_OUTPUT_BUFFER 구조체에 대한 포인터를 제공합니다.
  • IoStatusBlockIO_STATUS_BLOCK 구조체로 설정됩니다.

출력 버퍼 길이

OutputBufferLengthOutputBuffer에서 제공하는 출력 버퍼의 크기를 바이트 단위로 제공합니다.

상태 블록

요청이 성공하면 IoStatusBlock-Status>가 STATUS_SUCCESS 설정되고, 그렇지 않으면 Status 멤버가 오류 코드로 설정됩니다. 출력 버퍼가 출력 버퍼 헤더를 포함할 만큼 크지 않으면 Status 멤버가 STATUS_BUFFER_TOO_SMALL. 출력 버퍼가 출력 버퍼 헤더를 포함할 만큼 크지만 컨트롤 메서드의 모든 출력 인수를 포함할 만큼 크지 않은 경우 Status 멤버는 STATUS_BUFFER_OVERFLOW 설정되고 OutputBuffer-Length>는 출력 버퍼의 필요한 길이로 설정됩니다.

요청이 성공하면 IoStatusBlock-Information> 멤버가 출력 버퍼에 반환되는 바이트 수로 설정되고, 그렇지 않으면 정보 멤버가 0으로 설정됩니다.

설명

디바이스용 드라이버는 IOCTL_ACPI_ASYNC_EVAL_METHOD_EX 사용하여 디바이스 네임스페이스의 자식 개체에서 지원하는 제어 메서드를 비동기적으로 평가할 수 있습니다. 이 요청에서 제공하는 제어 메서드의 경로와 이름은 ACPI 네임스페이스에 있는 메서드의 정규화된 경로와 이름이거나 요청이 전송되는 디바이스를 기준으로 메서드의 경로와 이름이어야 합니다. 예를 들어 'ABCD'라는 디바이스가 ACPI 네임스페이스 루트의 직속 자식이고, 'ABCD' 디바이스가 'CHLD'라는 자식 디바이스를 지원하고 , 'CHLD' 디바이스가 '_FOO'라는 메서드를 지원한다고 가정합니다. 이 경우 '_FOO' 메서드를 평가하기 위해 드라이버는 'ABCD' 디바이스에 평가 요청을 보내고 경로와 이름 '\ABCD를 제공합니다. acPI 네임스페이스의 정규화된 경로 및 이름인 CHLD._FOO 또는 ACPI 네임스페이스의 'ABCD' 디바이스를 기준으로 하는 경로 및 이름인 'CHLD._FOO'입니다.

IOCTL_ACPI_ASYNC_EVAL_METHOD_EX 다음과 같은 유형의 입력 버퍼 구조를 지원합니다.

ACPI_EVAL_INPUT_BUFFER_EX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_EX

ACPI_EVAL_INPUT_BUFFER_COMPLEX_EX

컨트롤 메서드의 출력 인수는 OutBuffer 포인터에서 제공하는 가변 길이 ACPI_EVAL_OUTPUT_BUFFER 구조체에 반환됩니다. ACPI_EVAL_OUTPUT_BUFFER 각각 출력 인수를 반환하는 가변 길이 ACPI_METHOD_ARGUMENT 구조의 배열을 포함합니다.

ACPI 컨트롤 메서드를 동기적으로 평가하는 방법에 대한 자세한 내용은 IOCTL_ACPI_EVAL_METHOD, IOCTL_ACPI_EVAL_METHOD_EX동기적으로 ACPI 제어 메서드 평가를 참조하세요.

IOCTL_ACPI_ASYNC_EVAL_METHOD_EX IRQL <= DISPATCH_LEVEL만 사용할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista 이상 버전의 Windows.
머리글 acpiioct.h(Acpiioct.h 포함)

추가 정보

ACPI_EVAL_INPUT_BUFFER_COMPLEX_EX

ACPI_EVAL_INPUT_BUFFER_EX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_EX

ACPI_EVAL_OUTPUT_BUFFER

ACPI_METHOD_ARGUMENT

IOCTL_ACPI_EVAL_METHOD

IOCTL_ACPI_EVAL_METHOD_EX