MsiSourceListEnumMediaDisks 函式列舉了為該媒體來源註冊的磁碟清單,用於某個補丁或產品。
語法
UINT MsiSourceListEnumMediaDisksA(
[in] LPCSTR szProductCodeOrPatchCode,
[in, optional] LPCSTR szUserSid,
[in] MSIINSTALLCONTEXT dwContext,
[in] DWORD dwOptions,
[in] DWORD dwIndex,
[out, optional] LPDWORD pdwDiskId,
[out, optional] LPSTR szVolumeLabel,
[in, out, optional] LPDWORD pcchVolumeLabel,
[out, optional] LPSTR szDiskPrompt,
[in, out, optional] LPDWORD pcchDiskPrompt
);
參數
[in] szProductCodeOrPatchCode
產品或補丁的 ProductCode 或補丁 GUID。 使用空終端字串。 若字串超過 39 個字元,函式失敗並回傳 ERROR_INVALID_PARAMETER。 這個參數不能 NULL。
[in, optional] szUserSid
一個字串 SID,用來指定包含產品或補丁的使用者帳號。 SID 尚未被驗證或解決。 錯誤的 SID 可能會回傳 ERROR_UNKNOWN_PRODUCT 或 ERROR_UNKNOWN_PATCH。 在引用機器上下文時,szUserSID 必須為 NULL,dwContext 必須為 MSIINSTALLCONTEXT_MACHINE。
[in] dwContext
此參數指定產品或補丁實例的上下文。 此參數可包含以下其中一個值。
| 語境類型 | Meaning |
|---|---|
|
產品或修補實例存在於每位使用者管理的情境中。 |
|
產品或修補實例存在於每個使用者未管理的上下文中。 |
|
產品或補丁實例存在於每台機器的情境中。 |
[in] dwOptions
dwOptions 值,指定了 szProductCodeOrPatchCode 的意義。
| Flag | Meaning |
|---|---|
|
szProductCodeOrPatchCode 是一個產品代碼 GUID。 |
|
szProductCodeOrPatchCode 是一個修補碼 GUID。 |
[in] dwIndex
要檢索的來源索引。 此參數在第一次呼叫 MsiSourceListEnumMediaDisks 函式時必須為 0(0),之後在後續呼叫時則需遞增,直到函式回傳 ERROR_NO_MORE_ITEMS。
[out, optional] pdwDiskId
在進入 MsiSourceListEnumMediaDisks 時,此參數提供指向 DWORD 的指標,以接收被枚舉磁碟的 ID。 這是選擇性參數。
[out, optional] szVolumeLabel
輸出緩衝區接收被列舉磁碟的磁碟區標籤。 這個緩衝區應該足夠大以容納這些資訊。 若緩衝區太小,函式會回傳 ERROR_MORE_DATA,並將 *pcchVolumeLabel 設為值中 TCHAR 的數量,不包含終止的 NULL 字元。
如果 szVolumeLabel 和 pcchVolumeLabel 都設為 NULL,函式會回傳 ERROR_SUCCESS 值是否存在,但不會取得該值。
[in, out, optional] pcchVolumeLabel
一個指標指向一個變數,指定 szVolumeLabel 緩衝區中 TCHAR 的數量。 當函式回傳時,這個參數是接收值中 TCHAR 的數量,不包含終止的空字元。
只有當 szVolumeLabel 也是 NULL 時,這個參數才可設為 NULL,否則函式會回傳 ERROR_INVALID_PARAMETER。
[out, optional] szDiskPrompt
一個輸出緩衝區,接收被枚舉磁碟的磁碟提示。 這個緩衝區應該足夠大以容納這些資訊。 若緩衝區太小,函式會回傳 ERROR_MORE_DATA,並將 *pcchDiskPrompt 設為值中 TCHAR 的數量,不包含終止的 NULL 字元。
若 szDiskPrompt 設為 NULL ,且 pcchDiskPrompt 設為有效指標,函式會回傳 ERROR_SUCCESS,並將 *pcchDiskPrompt 設為值中 TCHAR 的數量,不包含終止的 NULL 字元。 接著可以再次呼叫該函式來取得該值, szDiskPrompt 緩衝區容量足以容納 *pcchDiskPrompt + 1 個字元。
若 szDiskPrompt 與 pcchDiskPrompt 皆設為 NULL,函式會回傳 ERROR_SUCCESS 值是否存在,且不會取回該值。
[in, out, optional] pcchDiskPrompt
一個指標指向一個變數,指定 szDiskPrompt 緩衝區中 TCHAR 的數量。 當函式回傳時,無論函式是否將該值複製到指定的緩衝區,這個參數都會被設定為請求值的大小。 大小以請求值中 TCHAR 的數量回傳,不包含終止的空字元。
只有當 szDiskPrompt 也是 NULL 時,這個參數才可設為 NULL,否則函式會回傳 ERROR_INVALID_PARAMETER。
返回值
MsiSourceListEnumMediaDisks 函式回傳以下值。
| 價值觀 | Meaning |
|---|---|
|
使用者無法讀取指定的媒體來源或指定產品或修補程式。 這並不代表是否找到媒體來源、產品或補丁。 |
|
設定資料損壞了。 |
|
會傳遞一個無效參數給函式。 |
|
此產品或補丁已不再註冊光碟。 |
|
該數值被成功列舉。 |
|
找不到該補丁。 |
|
該產品未被找到。 |
|
所提供的緩衝區太小,無法容納所需資訊。 |
|
意外的內部故障。 |
備註
當多次呼叫 MsiSourceListEnumMediaDisks 以列舉單一產品實例的所有來源時,每次呼叫都必須從同一個執行緒進行。
管理員可以列舉每位使用者的非管理安裝、每台機器的安裝,以及任何使用者的每使用者管理安裝。 管理員無法為其他使用者列舉每位使用者的非管理安裝。 非管理員只能列舉他們自己的每個使用者的非管理與管理安裝,以及每台機器的安裝。
備註
msi.h 標頭將 MsiSourceListEnumMediaDisks 定義為別名,根據 UNICODE 預處理器常數的定義,自動選擇此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型 的慣例。
需求
| Requirement | 價值觀 |
|---|---|
| 最低支援的用戶端 | Windows Server 2012、Windows 8、Windows Server 2008 R2 或 Windows 7 上的 Windows Installer 5.0。 Windows Server 2008 或 Windows Vista 上的 Windows Installer 4.0 或 Windows Installer 4.5。 Windows Server 2003 或 Windows XP 上的 Windows 安裝程式 3.0 或更新版本。 請參閱 Windows 安裝程式 Run-Time 需求,了解 Windows 安裝程式版本所需的最低 Windows 服務包。 |
| 目標平臺 | 窗戶 |
| Header | MSI.H |
| Library | Msi.lib |
| DLL | Msi.dll |