共用方式為


GetRawInputDeviceList 函式 (winuser.h)

列舉附加至系統的原始輸入設備。

語法

UINT GetRawInputDeviceList(
  [out, optional] PRAWINPUTDEVICELIST pRawInputDeviceList,
  [in, out]       PUINT               puiNumDevices,
  [in]            UINT                cbSize
);

參數

[out, optional] pRawInputDeviceList

類型: PRAWINPUTDEVICELIST

附加至系統之裝置的 RAWINPUTDEVICELIST 結構數位。 如果 為 NULL,則會在 *puiNumDevices 中傳回裝置數目。

[in, out] puiNumDevices

類型: PUINT

如果 pRawInputDeviceListNULL,此函式會以連結至系統的裝置數目填入此變數;否則,這個變數會指定可包含在 pRawInputDeviceList 指向之緩衝區中的 RAWINPUTDEVICELIST 結構數目。 如果此值小於附加至系統的裝置數目,函式會傳回此變數中實際數目的裝置數目,並因 ERROR_INSUFFICIENT_BUFFER而失敗。 如果此值大於或等於附加至系統的裝置數目,則此值不會變更,且裝置數目會回報為傳回值。

[in] cbSize

類型: UINT

RAWINPUTDEVICELIST 結構的大小,以位元組為單位。

傳回值

類型: UINT

如果函式成功,傳回值就是 pRawInputDeviceList 所指向緩衝區中儲存的裝置數目。

在任何其他錯誤上,函式會傳回 (UINT) -1,而 GetLastError 會傳回錯誤指示。

備註

從此函式傳回的裝置是滑鼠、鍵盤和其他 Human Interface Device (HID) 裝置。

若要取得附加裝置的詳細資訊,請使用RAWINPUTDEVICELIST中的 hDevice 呼叫 GetRawInputDeviceInfo

範例

下列範例程式代碼顯示 GetRawInputDeviceList 的一般呼叫:

UINT nDevices;
PRAWINPUTDEVICELIST pRawInputDeviceList = NULL;
while (true) {
    if (GetRawInputDeviceList(NULL, &nDevices, sizeof(RAWINPUTDEVICELIST)) != 0) { Error();}
    if (nDevices == 0) { break; }
    if ((pRawInputDeviceList = malloc(sizeof(RAWINPUTDEVICELIST) * nDevices)) == NULL) {Error();}
    nDevices = GetRawInputDeviceList(pRawInputDeviceList, &nDevices, sizeof(RAWINPUTDEVICELIST));
    if (nDevices == (UINT)-1) {
        if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) { Error(); }
        // Devices were added.
        free(pRawInputDeviceList);
        continue;
    }
    break;
}
// do the job...
// after the job, free the RAWINPUTDEVICELIST
free(pRawInputDeviceList);

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限桌面應用程式]
目標平台 Windows
標頭 winuser.h (包含 Windows.h)
程式庫 User32.lib
Dll User32.dll
API 集合 ext-ms-win-ntuser-rawinput-l1-1-0 (Windows 10 10.0.14393 版)

另請參閱

概念

GetRawInputDeviceInfo

RAWINPUTDEVICELIST

原始輸入

參考