GetMappedFileNameA 函式 (psapi.h)

檢查指定的位址是否在指定進程的位址空間中記憶體對應檔案內。 如果是,函式會傳回記憶體對應檔案的名稱。

語法

DWORD GetMappedFileNameA(
  [in]  HANDLE hProcess,
  [in]  LPVOID lpv,
  [out] LPSTR  lpFilename,
  [in]  DWORD  nSize
);

參數

[in] hProcess

進程的句柄。 句柄必須具有 PROCESS_QUERY_INFORMATION 訪問許可權。 如需詳細資訊,請參閱 處理安全性和訪問許可權

[in] lpv

要驗證的位址。

[out] lpFilename

緩衝區的指標,接收 lpv 所指定地址所屬的記憶體對應檔案名稱。

[in] nSize

lpFilename 緩衝區的大小,以字元為單位。

傳回值

如果函式成功,傳回值會以字元指定複製到緩衝區的字元串長度。

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

備註

從 Windows 7 和 Windows Server 2008 R2 開始,Psapi.h 會建立 PSAPI 函式的版本號碼。 PSAPI 版本號碼會影響用來呼叫函式的名稱,以及程式必須載入的連結庫。

如果 PSAPI_VERSION 為 2 或更新版本,此函式會定義為 Psapi.h 中的 K32GetMappedFileName,並在 Kernel32.lib 和 Kernel32.dll 中導出。 如果 PSAPI_VERSION 為 1,此函式會定義為 Psapi.h 中的 GetMappedFileName ,並在 Psapi.lib 中匯出,並 Psapi.dll 為呼叫 K32GetMappedFileName 的包裝函式。

必須在舊版 Windows 和 Windows 7 和更新版本上執行的程式應該一律將此函式呼叫為 GetMappedFileName。 若要確保符號的正確解析,請將 Psapi.lib 新增至 TARGETLIBS 宏,並使用 -DPSAPI_VERSION=1 編譯程式。 若要使用運行時間動態連結,請載入 Psapi.dll。

在 Windows Server 2012 中,下列技術支援此函式。

技術 支援
伺服器消息塊 (SMB) 3.0 通訊協定 Yes
SMB 3.0 透明故障轉移 (TFO) Yes
具有向外延展檔案共用的SMB 3.0 (SO) Yes
叢集共用磁碟區文件系統 (CsvFS) Yes
彈性檔案系統 (ReFS)
 

範例

如需範例,請參閱 從檔句柄取得檔名

注意

psapi.h 標頭會將 GetMappedFileName 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 psapi.h
程式庫 Windows 7 和 Windows Server 2008 R2 上的 Kernel32.lib;如果 Windows 7 和 Windows Server 2008 R2 上的 PSAPI_VERSION=1) ,Psapi.lib (;Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP 上的 Psapi.lib
Dll windows 7 和 Windows Server 2008 R2 上的 Kernel32.dll;如果 windows 7 和 Windows Server 2008 R2 上的 PSAPI_VERSION=1) ,Psapi.dll (;Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP 上的 Psapi.dll

另請參閱

EnumProcesses

記憶體對應檔案資訊

PSAPI 函式