Функция Wow64DisableWow64FsRedirection (wow64apiset.h)
Отключает перенаправление файловой системы для вызывающего потока. Перенаправление файловой системы включено по умолчанию.
Синтаксис
BOOL Wow64DisableWow64FsRedirection(
[out] PVOID *OldValue
);
Параметры
[out] OldValue
Значение перенаправления файловой системы WOW64. Система использует этот параметр для хранения сведений, необходимых для отменить изменения (повторного включения) перенаправления файловой системы.
Возвращаемое значение
Если функция выполняется успешно, возвращаемое значение будет ненулевым.
Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Эта функция полезна для 32-разрядных приложений, которым требуется получить доступ к собственному каталогу system32. По умолчанию перенаправление файловой системы WOW64 включено.
Связывание функции Wow64DisableWow64FsRedirectionWow64Redirection/ является заменой функции Wow64EnableWow64FsRedirection.
Чтобы восстановить перенаправление файловой системы, вызовите функцию Wow64RevertWow64FsRedirection . Каждый успешный вызов функции Wow64DisableWow64FsRedirection должен иметь соответствующий вызов функции Wow64RevertWow64FsRedirection . Это обеспечит повторное включение перенаправления и освобождение связанных системных ресурсов.
В Windows 8 и Windows Server 2012 эта функция поддерживается следующими технологиями.
Технология | Поддерживается |
---|---|
Протокол SMB 3.0 | Нет |
SMB 3.0 Transparent Failover (TFO) | Нет |
SMB 3.0 с масштабируемыми общими папками (SO) | Нет |
Файловая система общего тома кластера (CSVFS) | Да |
Восстанавливаемая файловая система (ReFS) | Нет |
Примеры
В следующем примере используется Wow64DisableWow64FsRedirection для отключения перенаправления файловой системы, чтобы 32-разрядное приложение, работающее под управлением WOW64, открывало 64-разрядную версию Notepad.exe в %SystemRoot%\System32 вместо перенаправления на 32-разрядную версию в %SystemRoot%\SysWOW64.
#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;
PVOID OldValue = NULL;
// Disable redirection immediately prior to the native API
// function call.
if( Wow64DisableWow64FsRedirection(&OldValue) )
{
// 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 == Wow64RevertWow64FsRedirection(OldValue) )
{
// Failure to re-enable redirection should be considered
// a critical failure and execution aborted.
return;
}
}
// The handle, if valid, now can be used as usual, and without
// leaving redirection disabled.
if( INVALID_HANDLE_VALUE != hFile )
{
// Use the file handle
}
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista, Windows XP Professional x64 Edition [только классические приложения] |
Минимальная версия сервера | Windows Server 2008, Windows Server 2003 с пакетом обновления 1 (SP1) [только классические приложения] |
Целевая платформа | Windows |
Header | wow64apiset.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |