Wow64EnableWow64FsRedirection 函数 (wow64apiset.h)

启用或禁用调用线程的文件系统重定向。

当存在嵌套调用时,此函数可能无法可靠地工作。 因此,此函数已替换为 Wow64DisableWow64FsRedirectionWow64RevertWow64FsRedirection 函数。

注意 这两种控制文件系统重定向的方法不能以任何方式结合使用。 不要将 Wow64EnableWow64FsRedirection 函数与 Wow64DisableWow64FsRedirection 函数或 Wow64RevertWow64FsRedirection 函数一起使用。
 

语法

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 协议
SMB 3.0 透明故障转移 (TFO)
具有横向扩展文件共享的 SMB 3.0 (SO)
群集共享卷文件系统 (CSV)
弹性文件系统 (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)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

文件管理函数

文件系统重定向程序

GetSystemWow64Directory

Wow64DisableWow64FsRedirection

Wow64RevertWow64FsRedirection