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 通訊協定 | 是的 |
SMB 3.0 透明故障轉移 (TFO) | 是的 |
具有向外延展檔案共用的SMB 3.0(SO) | 是的 |
叢集共用磁碟區檔案系統 (CsvFS) | 是的 |
復原檔案系統 (ReFS) | 是的 |
例子
如需範例,請參閱 從檔案句柄取得檔名。
注意
psapi.h 標頭會根據 UNICODE 預處理器常數的定義,將 GetMappedFileName 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
支援的最低伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | psapi.h |
連結庫 | Windows 7 和 Windows Server 2008 R2 上的 Kernel32.lib;Psapi.lib (if PSAPI_VERSION=1) on Windows 7 和 Windows Server 2008 R2;Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP 上的 Psapi.lib |
DLL | Kernel32.dll Windows 7 和 Windows Server 2008 R2;Psapi.dll Windows 7 和 Windows Server 2008 R2 上的 PSAPI_VERSION=1;Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP 上的 Psapi.dll |