LoadPackagedLibrary 函式 (winbase.h)

將指定的封裝模組及其相依性載入呼叫進程的位址空間。

語法

HMODULE LoadPackagedLibrary(
  [in] LPCWSTR lpwLibFileName,
       DWORD   Reserved
);

參數

[in] lpwLibFileName

要載入之封裝模組的檔案名。 模組可以是程式庫模組, (.dll檔案) 或可執行模組 (.exe檔案) 。

如果此參數指定沒有路徑且省略副檔名的模組名稱,函式會將預設程式庫副檔名附加至模組名稱.dll。 若要防止函式將.dll附加至模組名稱,請在模組名稱字串中包含尾端點字元 (.) 。

如果此參數指定路徑,函式會搜尋模組的路徑。 路徑不能是路徑中的絕對路徑或包含 「.」。「 的相對路徑。 指定路徑時,請務必使用反斜線 (\) ,而不是正斜線 (/) 。 如需路徑的詳細資訊,請參閱 命名檔案、路徑和命名空間

如果指定的模組已在進程中載入,函式會傳回載入模組的控制碼。 模組原本必須從進程的套件相依性圖形載入。

如果載入指定的模組會導致系統載入其他相關聯的模組,函式會先搜尋載入的模組,然後它會搜尋進程的套件相依性圖形。 如需詳細資訊,請參閱<備註>。

Reserved

此參數已保留備用。 必須是 0。

傳回值

如果函式成功,則傳回值是載入模組的控制碼。

如果函式失敗,則傳回值為 Null。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

LoadPackagedLibrary函式是一種簡化版本的LoadLibraryEx。 封裝的應用程式可以使用 LoadPackagedLibrary 載入已封裝的模組。 未封裝的應用程式無法使用 LoadPackagedLibrary;如果未封裝的應用程式呼叫此函式,則會因為 APPMODEL_ERROR_NO_PACKAGE而失敗。

LoadPackagedLibrary 會傳回指定模組的控制碼,並遞增其參考計數。 如果模組已經載入,函式會將控制碼傳回至載入的模組。 呼叫進程可以使用 LoadPackagedLibrary 所傳回的控制碼來識別 GetProcAddress 函式呼叫中的模組。 使用 FreeLibrary 函式 釋放載入的模組,並遞減其參考計數。

如果函式必須搜尋指定的模組或其相依性,它只會搜尋進程的套件相依性圖表。 這是應用程式的套件加上應用程式套件資訊清單區段中所指定 <PackageDependency><Dependencies> 的任何相依性。 相依性會依其出現在資訊清單中的順序進行搜尋。 套件相依性圖形是在 <Dependencies> 應用程式套件資訊清單的 區段中指定。 相依性會依其出現在資訊清單中的順序進行搜尋。 搜尋會繼續進行,如下所示:

  1. 函式會先搜尋已載入的模組。 如果指定的模組原本是從進程的套件相依性圖形載入,則函式會傳回載入模組的控制碼。 如果指定的模組未從進程的套件相依性圖形載入,函式會傳回 Null
  2. 如果模組尚未載入,函式會搜尋進程的套件相依性圖表。
  3. 如果函式找不到指定的模組或其相依性之一,函式就會失敗。
DllMain呼叫LoadPackagedLibrary並不安全。 如需詳細資訊,請參閱 DllMain中的一節。

注意

在 Windows Phone,必須從 PhoneAppModelHost.dll 呼叫LoadPackagedLibrary。 不支援使用 Kernel32.dll

規格需求

   
最低支援的用戶端 Windows 8 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2012 [傳統型應用程式 |UWP 應用程式]
目標平臺 Windows
標頭 winbase.h (包含 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

動態連結程式庫搜尋順序