IOCTL_ACPI_ASYNC_EVAL_METHOD IOCTL(acpiioct.h)
디바이스용 드라이버는 IOCTL_ACPI_ASYNC_EVAL_METHOD 디바이스 제어 요청을 사용하여 디바이스에서 지원하는 ACPI 제어 방법을 비동기적으로 평가할 수 있습니다. 드라이버는 IoBuildDeviceIoControlRequest 호출하고 다음 입력 및 출력 매개 변수를 전달하여 이 요청을 빌드해야 합니다.
주 코드
입력 버퍼
다음과 같이 IoBuildDeviceIoControlRequest 입력 매개 변수를 설정합니다.
- IoControlCode IOCTL_ACPI_ASYNC_EVAL_METHOD 설정됩니다.
- DeviceObject 디바이스의 PDO(물리적 디바이스 개체)에 대한 포인터로 설정됩니다.
- InputBuffer 컨트롤 메서드에 전달할 입력 인수의 형식에 따라 달라지는 입력 버퍼 구조에 대한 포인터로 설정됩니다. 이 IOCTL에서 지원하는 입력 인수 유형에 대한 자세한 내용은 이 항목의 뒷부분에 있는 설명 섹션을 참조하세요.
- InputBufferLengthInputBuffer제공된 입력 버퍼의 크기(바이트)로 설정됩니다.
- OutputBufferLengthOutputBuffer제공된 출력 버퍼의 크기를 바이트 단위로 제공합니다.
- InternalDeviceIoControl FALSE 설정됩니다.
- 이벤트 NULL 설정됩니다.
입력 버퍼 길이
InputBufferLengthInputBuffer제공된 입력 버퍼의 크기(바이트)로 설정됩니다.
출력 버퍼
다음과 같이 IoBuildDeviceIoControlRequest 출력 매개 변수를 설정합니다.
- OutputBuffer 컨트롤 메서드의 출력 인수를 포함하는 ACPI_EVAL_OUTPUT_BUFFER 구조체에 대한 포인터를 제공합니다.
- IoStatusBlockIO_STATUS_BLOCK 구조체로 설정됩니다.
출력 버퍼 길이
OutputBufferLengthOutputBuffer제공된 출력 버퍼의 크기를 바이트 단위로 제공합니다.
상태 블록
요청이 성공하면 IoStatusBlock ->상태 STATUS_SUCCESS; 그렇지 않으면 상태 멤버가 오류 코드로 설정됩니다. 출력 버퍼가 출력 버퍼 헤더를 포함할 만큼 충분히 크지 않으면 상태 멤버가 STATUS_BUFFER_TOO_SMALL 설정됩니다. 출력 버퍼가 출력 버퍼 헤더를 포함할 만큼 충분히 크지만 컨트롤 메서드의 모든 출력 인수를 포함할 만큼 크지 않은 경우 상태 멤버는 STATUS_BUFFER_OVERFLOW 설정되고 OutputBuffer->Length 출력 버퍼의 필수 길이로 설정됩니다.
요청이 성공하면 IoStatusBlock->Information 멤버는 출력 버퍼에 반환되는 바이트 수로 설정됩니다. 그렇지 않으면 Information 멤버가 0으로 설정됩니다.
발언
디바이스용 드라이버는 IOCTL_ACPI_ASYNC_EVAL_METHOD 사용하여 디바이스가 지원하는 제어 방법을 비동기적으로 평가할 수 있습니다. 예를 들어 디바이스 이름이 ACPI 네임스페이스에서 'ABCD'이고 'ABCD' 디바이스가 '_FOO' 메서드를 지원하는 경우 이 IOCTL을 사용하여 'ABCD' 디바이스에 요청을 보내고 제어 메서드 이름 '_FOO'을 제공하여 제어 메서드 '_FOO'를 평가할 수 있습니다.
IOCTL_ACPI_ASYNC_EVAL_METHOD 다음과 같은 유형의 입력 버퍼 구조를 지원합니다.
ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER
ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING
ACPI_EVAL_INPUT_BUFFER_COMPLEX
제어 메서드의 출력 인수는 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 IRQL <= DISPATCH_LEVEL만 사용할 수 있습니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista 이상 버전의 Windows. |
헤더 | acpiioct.h(Acpiioct.h 포함) |
참고 항목
ACPI_EVAL_INPUT_BUFFER_COMPLEX
ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER