Wow64EnableWow64FsRedirection 函式 (wow64apiset.h)

啟用或停用呼叫線程的文件系統重新導向。

當有巢狀呼叫時,此函式可能無法可靠地運作。 因此,此函式已由 Wow64DisableWow64FsRedirectionWow64RevertWow64FsRedirection 函式取代。

注意 這兩種控制檔系統重新導向的方法無法以任何方式合併。 請勿搭配 Wow64DisableWow64FsRedirection 函數使用 Wow64DisableWow64FsRedirectionWow64RevertWow64FsRedirection 函式。
 

語法

BOOLEAN Wow64EnableWow64FsRedirection(
  BOOLEAN Wow64FsEnableRedirection
);

參數

Wow64FsEnableRedirection

指出 WOW64 系統資料夾重新導向的要求類型。 如果 為 TRUE,則會啟用要求重新導向;如果 為 FALSE,則會停用要求重新導向。

傳回值

布爾值,指出函式是否成功。 如果 為 TRUE,則函式成功;如果 為 FALSE,則函式失敗。

備註

此函式適用於想要存取原生 system32 目錄的 32 位應用程式。 根據預設,會啟用 WOW64 檔案系統重新導向。

注意Wow64EnableWow64FsRedirection 函式會影響目前線程所執行的所有檔案作業,如果文件系統重新導向已停用任何時間,可能會產生意外的結果。 例如,DLL 載入取決於檔案系統重新導向,因此停用檔案系統重新導向會導致 DLL 載入失敗。 此外,許多功能實作都會使用延遲載入,而且在重新導向停用時將會失敗。 會保存初始延遲載入作業的失敗狀態,因此即使重新啟用檔案系統重新導向之後,後續使用延遲載入函式也會失敗。 若要避免這些問題,請在呼叫特定檔案 I/O 函式之前立即停用文件系統重新導向 (,例如無法重新導向的 CreateFile) ,然後使用 Wow64EnableWow64FsRedirection(TRUE)立即重新啟用文件系統重新導向。
 
只有呼叫此函式的線程才會啟用或停用檔案重新導向。 這隻會影響目前線程所做的作業。 某些函式,例如 CreateProcessAsUser,會在另一個線程上執行其工作,這不會受到呼叫線程中文件系統重新導向的狀態影響。

在 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

另請參閱

檔案管理功能

檔系統重新導向器

GetSystemWow64Directory

Wow64DisableWow64FsRedirection

Wow64RevertWow64FsRedirection