共用方式為


MsiSourceListEnumMediaDisksA function (msi.h)

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。

SID 類型 Meaning
NULL
NULL 表示目前登入的使用者。 在參考目前使用者帳號時,szUserSID 可以是 NULL,dwContext 可以是 MSIINSTALLCONTEXT_USERMANAGED 或 MSIINSTALLCONTEXT_USERUNMANAGED。
使用者 SID
系統中特定使用者的列舉。 使用者 SID 的範例為「S-1-3-64-2415071341-1358098788-3127455600-2561」。
S-1-1-0
特殊的 SID 字串 s-1-1-0(所有人)指定系統中所有使用者的枚舉。
 
便條 特殊 SID 字串 s-1-5-18(系統)無法用來列舉每台機器安裝的產品或補丁。 將 SID 值設為 s-1-5-18 則返回ERROR_INVALID_PARAMETER。
 

[in] dwContext

此參數指定產品或補丁實例的上下文。 此參數可包含以下其中一個值。

語境類型 Meaning
MSIINSTALLCONTEXT_USERMANAGED
產品或修補實例存在於每位使用者管理的情境中。
MSIINSTALLCONTEXT_USERUNMANAGED
產品或修補實例存在於每個使用者未管理的上下文中。
MSIINSTALLCONTEXT_MACHINE
產品或補丁實例存在於每台機器的情境中。

[in] dwOptions

dwOptions 值,指定了 szProductCodeOrPatchCode 的意義。

Flag Meaning
MSICODE_PRODUCT
szProductCodeOrPatchCode 是一個產品代碼 GUID。
MSICODE_PATCH
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 字元。

如果 szVolumeLabelpcchVolumeLabel 都設為 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 個字元。

szDiskPromptpcchDiskPrompt 皆設為 NULL,函式會回傳 ERROR_SUCCESS 值是否存在,且不會取回該值。

[in, out, optional] pcchDiskPrompt

一個指標指向一個變數,指定 szDiskPrompt 緩衝區中 TCHAR 的數量。 當函式回傳時,無論函式是否將該值複製到指定的緩衝區,這個參數都會被設定為請求值的大小。 大小以請求值中 TCHAR 的數量回傳,不包含終止的空字元。

只有當 szDiskPrompt 也是 NULL 時,這個參數才可設為 NULL,否則函式會回傳 ERROR_INVALID_PARAMETER。

返回值

MsiSourceListEnumMediaDisks 函式回傳以下值。

價值觀 Meaning
ERROR_ACCESS_DENIED
使用者無法讀取指定的媒體來源或指定產品或修補程式。 這並不代表是否找到媒體來源、產品或補丁。
ERROR_BAD_CONFIGURATION
設定資料損壞了。
ERROR_INVALID_PARAMETER
會傳遞一個無效參數給函式。
ERROR_NO_MORE_ITEMS
此產品或補丁已不再註冊光碟。
ERROR_SUCCESS
該數值被成功列舉。
ERROR_UNKNOWN_PATCH
找不到該補丁。
ERROR_UNKNOWN_PRODUCT
該產品未被找到。
ERROR_MORE_DATA
所提供的緩衝區太小,無法容納所需資訊。
ERROR_FUNCTION_FAILED
意外的內部故障。

備註

當多次呼叫 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

另請參閱

安裝內容

Windows 安裝程式 2.0 及更早版本不支援

ProductCode