Поделиться через


Функция Wow64EnableWow64FsRedirection (wow64apiset.h)

Включает или отключает перенаправление файловой системы для вызывающего потока.

Эта функция может не работать надежно при наличии вложенных вызовов. Поэтому эта функция была заменена функциями Wow64DisableWow64FsRedirection и Wow64RevertWow64FsRedirection .

Примечание Эти два метода управления перенаправлением файловой системы не могут быть каким-либо образом объединены. Не используйте функцию Wow64EnableWow64FsRedirection с функцией Wow64DisableWow64FsRedirection или Wow64RevertWow64FsRedirection .
 

Синтаксис

BOOLEAN Wow64EnableWow64FsRedirection(
  BOOLEAN Wow64FsEnableRedirection
);

Параметры

Wow64FsEnableRedirection

Указывает тип запроса для перенаправления системных папок WOW64. Если задано значение TRUE, перенаправление запросов включено; Значение false, перенаправление запросов будет отключено.

Возвращаемое значение

Логическое значение, указывающее, успешно ли выполнена функция. Если задано значение TRUE, функция выполнена успешно; Значение false, функция завершилась сбоем.

Комментарии

Эта функция полезна для 32-разрядных приложений, которым требуется получить доступ к собственному каталогу system32. По умолчанию перенаправление файловой системы WOW64 включено.

Примечание Функция Wow64EnableWow64FsRedirection влияет на все операции с файлами, выполняемые текущим потоком, что может иметь непредвиденные последствия, если перенаправление файловой системы отключено в течение какого-либо периода времени. Например, загрузка БИБЛИОТЕК DLL зависит от перенаправления файловой системы, поэтому отключение перенаправления файловой системы приведет к сбою загрузки библиотеки DLL. Кроме того, многие реализации функций используют отложенную загрузку и завершатся сбоем, пока перенаправление отключено. Состояние сбоя начальной операции отложенной загрузки сохраняется, поэтому любое последующее использование функции задержки загрузки завершится ошибкой даже после повторного включения перенаправления файловой системы. Чтобы избежать этих проблем, отключите перенаправление файловой системы непосредственно перед вызовами определенных функций файлового ввода-вывода (например, CreateFile), которые не должны перенаправляться, и повторно включите перенаправление файловой системы сразу после этого с помощью Wow64EnableWow64FsRedirection(TRUE).
 
Перенаправление файлов включено или отключено только для потока, вызывающего эту функцию. Это влияет только на операции, выполняемые текущим потоком. Некоторые функции, например CreateProcessAsUser, выполняют свою работу в другом потоке, на который не влияет состояние перенаправления файловой системы в вызывающем потоке.

В Windows 8 и Windows Server 2012 эта функция поддерживается следующими технологиями.

Технология Поддерживается
Протокол SMB 3.0 Нет
SMB 3.0 Transparent Failover (TFO) Нет
SMB 3.0 с масштабируемыми общими папками (SO) Нет
Файловая система общего тома кластера (CSVFS) Да
Восстанавливаемая файловая система (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
Header wow64apiset.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

Функции управления файлами

Перенаправитель файловой системы

GetSystemWow64Directory

Wow64DisableWow64FsRedirection

Wow64RevertWow64FsRedirection