Wow64DisableWow64FsRedirection 関数 (wow64apiset.h)
呼び出し元スレッドのファイル システム リダイレクトを無効にします。 ファイル システムのリダイレクトは、既定で有効になっています。
構文
BOOL Wow64DisableWow64FsRedirection(
[out] PVOID *OldValue
);
パラメーター
[out] OldValue
WOW64 ファイル システムのリダイレクト値。 システムは、このパラメーターを使用して、ファイル システムのリダイレクトを元に戻す (再有効化) するために必要な情報を格納します。
戻り値
関数が成功した場合、戻り値は 0 以外の値になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
この関数は、ネイティブ system32 ディレクトリにアクセスする 32 ビット アプリケーションに役立ちます。 既定では、WOW64 ファイル システムのリダイレクトが有効になっています。
Wow64DisableWow64FsRedirection/Wow64RevertWow64FsRedirection 関数のペアリングは、Wow64EnableWow64FsRedirection 関数の機能に代わるものです。
ファイル システムのリダイレクトを復元するには、 Wow64RevertWow64FsRedirection 関数を呼び出します。 Wow64DisableWow64FsRedirection 関数が正常に呼び出されるたびに、Wow64RevertWow64FsRedirection 関数を呼び出す必要があります。 これにより、リダイレクトが再び有効になり、関連するシステム リソースが解放されます。
Windows 8 と Windows Server 2012 では、この関数は、次のテクノロジによってサポートされています。
テクノロジ | サポートされています |
---|---|
サーバー メッセージ ブロック (SMB) 3.0 プロトコル | いいえ |
SMB 3.0 Transparent Failover (TFO) | いいえ |
スケールアウト ファイル共有 (SO) を使う SMB 3.0 | いいえ |
クラスターの共有ボリューム ファイル システム (CsvFS) | はい |
Resilient File System (ReFS) | いいえ |
例
次の例では 、Wow64DisableWow64FsRedirection を使用してファイル システムのリダイレクトを無効にして、WOW64 で実行されている 32 ビット アプリケーションが %SystemRoot%\SysWOW64 の 32 ビット バージョンにリダイレクトされるのではなく、%SystemRoot%\System32 で 64 ビット バージョンの Notepad.exe を開くことができるようにします。
#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 SP1 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | wow64apiset.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |