RegQueryMultipleValuesA 函式 (winreg.h)
擷取與開啟登錄機碼相關聯之值名稱清單的類型和數據。
語法
LSTATUS RegQueryMultipleValuesA(
[in] HKEY hKey,
[out] PVALENTA val_list,
[in] DWORD num_vals,
[out, optional] LPSTR lpValueBuf,
[in, out, optional] LPDWORD ldwTotsize
);
參數
[in] hKey
開啟登錄機碼的句柄。 金鑰必須使用KEY_QUERY_VALUE訪問許可權開啟。 如需詳細資訊,請參閱
此句柄是由 RegCreateKeyEx、RegCreateKeyTransacted、RegOpenKeyEx或 RegOpenKeyTransacted 函式所傳回。 它也可以是下列其中一個 預先定義的索引鍵:
- HKEY_CLASSES_ROOT
- HKEY_CURRENT_CONFIG
- HKEY_CURRENT_USER
- HKEY_LOCAL_MACHINE
- HKEY_PERFORMANCE_DATA
- HKEY_USERS
[out] val_list
陣列的指標
描述一或多個值專案的 VALENT 結構。 在輸入時,每個結構的 ve_valuename 成員必須包含要擷取之值名稱的指標。 如果指定的任何值不存在於指定的索引鍵中,函式就會失敗。
如果函式成功,陣列的每個元素都會包含指定值的資訊。
[in] num_vals
val_list 陣列中的項目數目。
[out, optional] lpValueBuf
緩衝區的指標。 如果函式成功,緩衝區會接收每個值的數據。
如果 lpValueBufNULL,則 ldwTotsize 參數所指向的值必須是零,在此情況下,函式會傳回 ERROR_MORE_DATA,ldwTotsize 會接收所需的緩衝區大小,以位元組為單位。
[in, out, optional] ldwTotsize
變數的指標,指定 lpValueBuf 參數所指向的緩衝區大小,以位元組為單位。 如果函式成功,ldwTotsize 會收到複製到緩衝區的位元組數目。 如果函式因為緩衝區太小而失敗,ldwTotsize 會收到所需的大小,以位元組為單位。
傳回值
如果函式成功,則傳回值會ERROR_SUCCESS。
如果函式失敗,傳回值就是下列其中一個錯誤碼。
傳回碼 | 描述 |
---|---|
|
RegQueryMultipleValues 無法具現化或存取動態索引鍵的提供者。 |
|
lpValueBuf 所指向的緩衝區 太小。 在此情況下,ldwTotsize 會收到所需的緩衝區大小。 |
|
所要求數據的大小總計(val_list 數位列的大小 + ldwTotSize)大於一 MB 的系統限制。 |
言論
RegQueryMultipleValues 函式可讓應用程式查詢靜態或動態索引鍵的一或多個值。 如果目標索引鍵是靜態索引鍵,則系統會以不可部分完成的方式提供所有值。 若要防止過度串行化,函式傳回的匯總數據不能超過一 MB。
如果目標索引鍵是動態索引鍵,則其提供者必須以不可部分完成的方式提供所有值。 這表示提供者應該同步填入結果緩衝區,同時提供緩衝區中所有值的一致檢視,同時避免過度串行化。 提供者最多可以在對這個函式的不可部分完成呼叫期間提供一 MB 的總輸出數據。
遠端支援 RegQueryMultipleValues;也就是說,傳遞至函式的 hKey 參數可以參考遠端計算機。
注意
winreg.h 標頭會根據 UNICODE 預處理器常數的定義,將 RegQueryMultipleValues 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
支援的最低伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | winreg.h (包括 Windows.h) |
連結庫 | Advapi32.lib |
DLL | Advapi32.dll |