IOCTL_BATTERY_QUERY_INFORMATION 제어 코드
배터리에 대한 다양한 정보를 검색합니다.
이 작업을 수행하려면 다음 매개 변수를 사용하여 DeviceIoControl 함수를 호출합니다.
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to battery
IOCTL_BATTERY_QUERY_INFORMATION, // 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_INFORMATION 사용합니다.
-
lpInBuffer
-
BATTERY_QUERY_INFORMATION 구조체에 대한 포인터입니다.
-
nInBufferSize
-
출력 버퍼의 크기(바이트)입니다.
-
lpOutBuffer
-
반환 버퍼에 대한 포인터입니다. 반환 버퍼의 데이터 형식(및 크기)은 입력 BATTERY_QUERY_INFORMATION 구조체의 BATTERY_QUERY_INFORMATION_LEVEL 멤버에 요청된 정보에 따라 달라집니다.
다음 표에서는 지정된 정보 수준에서 반환된 데이터를 보여줍니다.
정보 수준 반환된 데이터 BatteryDeviceName 배터리 이름을 지정하는 Null로 종료된 유니코드 문자열입니다. BatteryEstimatedTime 예상 배터리 실행 시간(초)을 지정하는 ULONG 입니다. BATTERY_QUERY_INFORMATION 구조체의 AtRate 멤버에 제공된 드레이닝 속도가 0인 경우 이 계산은 현재 드레이닝 속도를 기반으로 합니다. AtRate가 0이 아닌 경우 반환되는 시간은 지정된 속도에 대한 예상 실행 시간입니다. 예상 시간을 알 수 없는 경우(예: 배터리가 방전되지 않고 AtRate 가 0인 경우) BATTERY_UNKNOWN_TIME 반환됩니다. 이 값은 일부 배터리 시스템에서는 매우 정확하지 않습니다. 값은 디스크 활동 및 기타 요인의 영향을 받을 수 있는 현재 전력 사용에 따라 크게 달라질 수 있습니다. 이 값의 변경 내용에 대한 알림 메커니즘은 없습니다. BatteryGranularityInformation IOCTL_BATTERY_QUERY_STATUS 반환되는 배터리 용량에 대한 보고 세분성을 포함하는 BATTERY_REPORTING_SCALE 구조체의 가변 길이 배열입니다. 세분성이 배터리의 현재 용량에 따라 달라지면 여러 항목이 반환됩니다. 항목 배열의 해석은 BATTERY_REPORTING_SCALE 참조하세요. 항목 수는 반환된 버퍼의 크기로 표시되며(lpBytesReturned /sizeof(BATTERY_REPORTING_SCALE))로 계산할 수 있습니다. 반환될 최대 항목 수는 4개입니다. BatteryInformation BATTERY_INFORMATION 구조체입니다. BatteryManufactureDate BATTERY_MANUFACTURE_DATE 구조체입니다. BatteryManufactureName 배터리 제조업체의 이름을 포함하는 Null로 종료된 유니코드 문자열입니다. BatterySerialNumber 배터리의 일련 번호를 포함하는 Null로 종료된 유니코드 문자열입니다. BatteryTemperature 배터리의 현재 온도(켈빈 10도)를 포함하는 ULONG 입니다. BatteryUniqueID 배터리를 고유하게 식별하는 Null로 종료된 유니코드 문자열입니다. 이 값은 특정 배터리를 추적하는 데 사용할 수 있습니다. 스마트 배터리의 경우 이 ID는 제조업체 이름, 장치 이름, 제조 날짜 및 일련 번호의 인쇄 가능한 표현과 연결됩니다. 이 값은 사용자에게 표시되지 않습니다. -
nOutBufferSize
-
출력 버퍼의 크기(바이트)입니다. 요청된 데이터의 정보 수준에 따라 변함없이 크기가 조정된 버퍼일 수 있습니다.
-
lpBytesReturned
-
lpOutBuffer 버퍼에 반환된 데이터의 크기를 바이트 단위로 받는 변수에 대한 포인터입니다.
출력 버퍼가 너무 작아서 데이터를 반환하지 못하면 호출이 실패하면 GetLastError 는 ERROR_INSUFFICIENT_BUFFER 오류 코드를 반환하고 반환된 바이트 수는 0입니다.
lpOverlapped가 NULL(오버랩되지 않은 I/O)인 경우 lpBytesReturned은 NULL일 수 없습니다.
lpOverlapped가 NULL(겹치는 I/O)이 아닌 경우 lpBytesReturned은 NULL일 수 있습니다. 겹치는 작업인 경우 GetOverlappedResult 함수를 호출하여 반환되는 바이트 수를 검색할 수 있습니다. hDevice가 I/O 완료 포트와 연결된 경우 GetQueuedCompletionStatus 함수를 호출하여 반환되는 바이트 수를 가져올 수 있습니다.
-
lpOverlapped
-
OVERLAPPED 구조에 대한 포인터입니다.
hDevice가 FILE_FLAG_OVERLAPPED 플래그를 사용하여 연 경우 lpOverlapped는 유효한 OVERLAPPED 구조를 가리킵니다. 이 경우 DeviceIoControl 은 겹치는(비동기) 작업으로 수행됩니다. FILE_FLAG_OVERLAPPED 플래그를 사용하여 디바이스를 열었고 lpOverlapped가 NULL이면 예기치 않은 방식으로 함수가 실패합니다.
FILE_FLAG_OVERLAPPED 플래그를 지정하지 않고 hDevice를 연 경우 lpOverlapped는 무시되고 DeviceIoControl 함수는 작업이 완료될 때까지 또는 오류가 발생할 때까지 반환되지 않습니다.
반환 값
작업이 성공적으로 완료되면 DeviceIoControl은 0이 아닌 값을 반환합니다.
작업이 실패하거나 보류 중인 경우 DeviceIoControl은 0을 반환합니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.
배터리에 대한 일부 정보는 선택 사항이거나 일부 배터리에 의미가 없을 수 있습니다. 요청된 특정 유형의 데이터를 현재 배터리에 사용할 수 없는 경우 ERROR_INVALID_FUNCTION 반환됩니다.
배터리 정보에 대한 모든 요청은 요청의 BatteryTag 요소가 현재 배터리 태그와 일치하지 않을 때마다 ERROR_NO_SUCH_DEVICE(또는 Windows 10 버전 1809 이하의 ERROR_FILE_NOT_FOUND)의 상태 완료됩니다. 이렇게 하면 반환된 배터리 정보가 요청된 배터리의 정보와 일치합니다(자세한 내용은 배터리 태그 참조).
설명
이 배터리 IOCTL은 배터리에 대한 다양한 정보를 검색합니다. BATTERY_QUERY_INFORMATION 입력 매개 변수 구조는 반환할 정보의 유형과 배터리 정보를 반환해야 하는 시기를 나타냅니다. 출력 버퍼의 데이터 형식 및 내용은 요청된 데이터에 따라 달라집니다.
이 작업에 겹치는 I/O의 의미는 DeviceIoControl 항목의 설명 섹션을 참조하세요.
예제
예를 들어 배터리 디바이스 열거를 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 |
Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 |
Windows Server 2003 [데스크톱 앱만 해당] |
헤더 |
|