Wow64EnableWow64FsRedirection 函式 (wow64apiset.h)
啟用或停用呼叫線程的文件系統重新導向。
當有巢狀呼叫時,此函式可能無法可靠地運作。 因此,此函式已由 Wow64DisableWow64FsRedirection 和 Wow64RevertWow64FsRedirection 函式取代。
注意 這兩種控制檔系統重新導向的方法無法以任何方式合併。 請勿搭配 Wow64DisableWow64FsRedirection 函數使用 Wow64DisableWow64FsRedirection 或 Wow64RevertWow64FsRedirection 函式。
語法
BOOLEAN Wow64EnableWow64FsRedirection(
BOOLEAN Wow64FsEnableRedirection
);
參數
Wow64FsEnableRedirection
指出 WOW64 系統資料夾重新導向的要求類型。 如果 為 TRUE,則會啟用要求重新導向;如果 為 FALSE,則會停用要求重新導向。
傳回值
布爾值,指出函式是否成功。 如果 為 TRUE,則函式成功;如果 為 FALSE,則函式失敗。
備註
此函式適用於想要存取原生 system32 目錄的 32 位應用程式。 根據預設,會啟用 WOW64 檔案系統重新導向。
注意Wow64EnableWow64FsRedirection 函式會影響目前線程所執行的所有檔案作業,如果文件系統重新導向已停用任何時間,可能會產生意外的結果。 例如,DLL 載入取決於檔案系統重新導向,因此停用檔案系統重新導向會導致 DLL 載入失敗。 此外,許多功能實作都會使用延遲載入,而且在重新導向停用時將會失敗。 會保存初始延遲載入作業的失敗狀態,因此即使重新啟用檔案系統重新導向之後,後續使用延遲載入函式也會失敗。 若要避免這些問題,請在呼叫特定檔案 I/O 函式之前立即停用文件系統重新導向 (,例如無法重新導向的 CreateFile) ,然後使用
Wow64EnableWow64FsRedirection(TRUE)
立即重新啟用文件系統重新導向。在 Windows 8 和 Windows Server 2012 中,下列技術支援此函式。
技術 | 支援 |
---|---|
伺服器消息塊 (SMB) 3.0 通訊協定 | No |
SMB 3.0 透明故障轉移 (TFO) | No |
具有向外延展檔案共用的SMB 3.0 (SO) | No |
叢集共用磁碟區文件系統 (CsvFS) | Yes |
彈性檔案系統 (ReFS) | 否 |
範例
#ifdef _WIN32_WINNT
#undef _WIN32_WINNT
#endif
#define _WIN32_WINNT 0x0501
#ifdef NTDDI_VERSION
#undef NTDDI_VERSION
#endif
#define NTDDI_VERSION 0x05010000
#include <Windows.h>
void main()
{
HANDLE hFile = INVALID_HANDLE_VALUE;
// Disable redirection immediately prior to the native API
// function call.
if( Wow64EnableWow64FsRedirection(FALSE) )
{
// Any function calls in this block of code should be as concise
// and as simple as possible to avoid unintended results.
hFile = CreateFile(TEXT("C:\\Windows\\System32\\Notepad.exe"),
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
// Immediately re-enable redirection. Note that any resources
// associated with OldValue are cleaned up by this call.
if ( FALSE == Wow64EnableWow64FsRedirection(TRUE) )
{
// Failure to re-enable redirection should be considered
// a critical failure and execution aborted.
return;
}
}
// The handle, if valid, can be used as usual without
// leaving redirection disabled.
if( INVALID_HANDLE_VALUE != hFile )
{
// Use the file handle
}
}
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | wow64apiset.h (包含 Windows.h) |
程式庫 | Kernel32.lib |
DLL | Kernel32.dll |