Share via


IOCTL_BATTERY_SET_INFORMATION控制項程式碼

設定各種電池資訊。 輸入參數結構 BATTERY_SET_INFORMATION會指出要設定的電池狀態資訊。

若要執行這項作業,請使用下列參數呼叫 DeviceIoControl 函 式。

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

參數

hDevice

要設定資訊的電池控制碼。 若要擷取裝置控制碼,請呼叫 CreateFile 函式。

dwIoControlCode

作業的控制程式代碼。 這個值會識別要執行的特定作業,以及要在其中執行的裝置類型。 針對此作業使用 IOCTL_BATTERY_SET_INFORMATION

lpInBuffer

BATTERY_SET_INFORMATION結構的指標。

nInBufferSize

輸入緩衝區的大小,以位元組為單位。

lpOutBuffer

未與這項作業搭配使用;設定為 Null

nOutBufferSize

未與這項作業搭配使用;設定為零。

lpBytesReturned

變數的指標,接收 lpOutBuffer 緩衝區中傳回的資料大小,以位元組為單位。

如果輸出緩衝區太小而無法傳回任何資料,則呼叫會失敗, GetLastError 會傳回錯誤碼ERROR_INSUFFICIENT_BUFFER,而傳回的位元組計數為零。

如果lpOverlappedNull (非重迭 I/O) ,即使lpOutBufferNulllpBytesReturned也無法為Null

如果 lpOverlapped 不是 Null (重迭的 I/O) , lpBytesReturned 可以是 Null。 如果這是重迭的作業,您可以呼叫 GetOverlappedResult 函式來擷取傳回的位元組數目。 如果 hDevice 與 I/O 完成埠相關聯,您可以呼叫 GetQueuedCompletionStatus 函式來取得傳回的位元組數目。

lpOverlapped

重迭結構的指標。

如果 hDevice 是以 FILE_FLAG_OVERLAPPED 旗標開啟, lpOverlapped 必須指向有效的 OVERLAPPED 結構。 在此情況下, DeviceIoControl 會以重迭的 (非同步) 作業來執行。 如果裝置以 FILE_FLAG_OVERLAPPED 旗標開啟,且 lpOverlappedNull,則函式會以無法預期的方式失敗。

如果 開啟 hDevice 但未指定FILE_FLAG_OVERLAPPED旗標,則會忽略 lpOverlapped ,而且 DeviceIoControl 函式不會在作業完成或發生錯誤之前傳回。

傳回值

如果作業順利完成, DeviceIoControl 會傳回非零值。

如果作業失敗或擱置中, DeviceIoControl 會 傳回零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

每當要求的 BatteryTag 元素不符合目前電池標籤的 BatteryTag 元素時,Windows 10 1809 版和) 更早版本中的所有電池資訊要求都會完成狀態ERROR_NO_SUCH_DEVICE (或ERROR_FILE_NOT_FOUND。 這可確保傳回的電池資訊符合所要求電池 (如需詳細資訊,請參閱 電池標籤) 。

備註

如果要求的電池標籤不符合目前電池標籤的狀態,則設定電池資訊的所有要求都會完成ERROR_FILE_NOT_FOUND狀態。

如需此作業上重迭 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

BATTERY_SET_INFORMATION

IOCTL_BATTERY_QUERY_INFORMATION

IOCTL_BATTERY_QUERY_STATUS

IOCTL_BATTERY_QUERY_TAG