다음을 통해 공유


IOCTL_BATTERY_QUERY_TAG 제어 코드

배터리의 현재 태그를 검색합니다.

이 작업을 수행하려면 다음 매개 변수를 사용하여 DeviceIoControl 함수를 호출합니다.

BOOL DeviceIoControl(
  (HANDLE) hDevice,            // handle to battery
  IOCTL_BATTERY_QUERY_TAG,     // dwIoControlCode
  (LPVOID) lpInBuffer,         // input buffer
  (DWORD) nInBufferSize,       // size of input buffer
  (LPVOID) lpOutBuffer,        // output buffer
  (DWORD) nOutBufferSize,      // size of output buffer
  (LPDWORD) lpBytesReturned,   // number of bytes returned
  (LPOVERLAPPED) lpOverlapped);// OVERLAPPED structure

매개 변수

hDevice

태그를 검색할 배터리에 대한 핸들입니다. 디바이스 핸들을 검색하려면 CreateFile 함수를 호출합니다.

dwIoControlCode

작업을 위한 제어 코드입니다. 이 값은 수행할 특정 작업과 수행할 디바이스 유형을 식별합니다. 이 작업에 는 IOCTL_BATTERY_QUERY_TAG 사용합니다.

lpInBuffer

ULONG 입력 버퍼에 대한 포인터입니다. 값은 배터리가 없는 경우 대기할 시간(밀리초)을 나타냅니다. 값 -1은 요청이 무기한 대기(또는 다른 이벤트에 의해 취소될 때까지)를 나타냅니다.

nInBufferSize

출력 버퍼의 크기(바이트)입니다.

lpOutBuffer

ULONG 출력 버퍼에 대한 포인터입니다. 성공하면 이 버퍼는 현재 배터리 태그를 포함하며, 이 태그는 BATTERY_TAG_INVALID 제외한 모든 값일 수 있습니다. 실패 시 GetLastError오류 코드 ERROR_FILE_NOT_FOUND 반환하는 경우 이 버퍼에는 BATTERY_TAG_INVALID 값이 포함됩니다.

nOutBufferSize

출력 버퍼의 크기(바이트)입니다.

lpBytesReturned

lpOutBuffer 버퍼에 저장된 데이터의 크기를 바이트 단위로 받는 변수에 대한 포인터입니다.

출력 버퍼가 너무 작아서 데이터를 반환하지 못하면 호출이 실패하고 GetLastErrorERROR_INSUFFICIENT_BUFFER 오류 코드를 반환하고 반환된 바이트 수는 0입니다.

lpOverlappedNULL(오버랩되지 않은 I/O)인 경우 lpBytesReturnedNULL일 수 없습니다.

lpOverlappedNULL(겹치는 I/O)이 아닌 경우 lpBytesReturnedNULL일 수 있습니다. 겹치는 작업인 경우 GetOverlappedResult 함수를 호출하여 반환된 바이트 수를 검색할 수 있습니다. hDevice가 I/O 완성 포트와 연결된 경우 GetQueuedCompletionStatus 함수를 호출하여 반환된 바이트 수를 가져올 수 있습니다.

lpOverlapped

OVERLAPPED 구조에 대한 포인터입니다.

FILE_FLAG_OVERLAPPED 플래그를 사용하여 hDevice를 연 경우 lpOverlapped는 유효한 OVERLAPPED 구조를 가리킵니다. 이 경우 DeviceIoControl 은 겹치는(비동기) 작업으로 수행됩니다. 디바이스가 FILE_FLAG_OVERLAPPED 플래그로 열렸고 lpOverlappedNULL인 경우 함수는 예측할 수 없는 방식으로 실패합니다.

FILE_FLAG_OVERLAPPED 플래그를 지정하지 않고 hDevice를 연 경우 lpOverlapped는 무시되고 DeviceIoControl 함수는 작업이 완료되거나 오류가 발생할 때까지 반환되지 않습니다.

반환 값

작업이 성공적으로 완료되면 DeviceIoControl은 0이 아닌 값을 반환합니다.

작업이 실패하거나 보류 중인 경우 DeviceIoControl은 0을 반환합니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

배터리 정보에 대한 모든 요청은 요청의 BatteryTag 요소가 현재 배터리 태그와 일치하지 않을 때마다 ERROR_NO_SUCH_DEVICE(또는 Windows 10 버전 1809 이하의 ERROR_FILE_NOT_FOUND)의 상태 완료됩니다. 이렇게 하면 반환된 배터리 정보가 요청된 배터리의 정보와 일치합니다(자세한 내용은 배터리 태그 참조).

설명

이 배터리 IOCTL은 배터리의 현재 태그를 검색합니다. 배터리 태그는 물리적 배터리를 다시 삽입하거나 교체하거나 특성 변경이 발생할 때 변경되는 고유한 0이 아닌 값입니다. 배터리 태그가 변경되는 시기, 변경 내용을 감지하는 방법 및 배터리 태그 변경 후 애플리케이션을 진행하는 방법에 대한 자세한 내용은 배터리 정보 개요 항목의 배터리 태그 섹션을 참조하세요. 배터리가 없는 경우 이 요청은 지정된 시간을 대기하고 배터리가 아직 없는 경우 ERROR_FILE_NOT_FOUND 반환하고 배터리 태그를 BATTERY_TAG_INVALID 설정합니다. 자세한 내용은 배터리 정보를 참조하세요.

다른 배터리 정보에 대한 모든 요청은 호출자가 일치하는 배터리 태그를 제공해야 합니다. 이렇게 하면 호출자가 모든 요청에 대해 동일한 배터리에 대한 정보를 수신하고 호출자가 일정한 폴링 없이 배터리 변경 내용을 인식할 수 있습니다.

이 작업에 겹치는 I/O의 의미는 DeviceIoControl 항목의 설명 섹션을 참조하세요.

예제

예를 들어 배터리 디바이스 열거를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버
Windows Server 2003 [데스크톱 앱만 해당]
헤더
Poclass.h;
Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 및 Windows XP의 BatClass.h

추가 정보

배터리 정보

전원 관리 제어 코드

DeviceIoControl

IOCTL_BATTERY_QUERY_INFORMATION

IOCTL_BATTERY_QUERY_STATUS

IOCTL_BATTERY_SET_INFORMATION