次の方法で共有


Wow64EnableWow64FsRedirection 関数 (wow64apiset.h)

呼び出し元スレッドのファイル システム リダイレクトを有効または無効にします。

入れ子になった呼び出しがある場合、この関数は確実に機能しない可能性があります。 そのため、この関数は Wow64DisableWow64FsRedirection 関数と Wow64RevertWow64FsRedirection 関数に置き換えられました。

メモ ファイル システムのリダイレクトを制御するこれら 2 つの方法は、どのような方法でも組み合わせることはできません。 Wow64DisableWow64FsRedirection 関数または Wow64RevertWow64FsRedirection 関数では、Wow64EnableWow64FsRedirection 関数を使用しないでください。
 

構文

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 Transparent Failover (TFO) いいえ
スケールアウト ファイル共有 (SO) を使う SMB 3.0 いいえ
クラスターの共有ボリューム ファイル システム (CsvFS) はい
Resilient File System (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

関連項目

File Management 関数

ファイル システム リダイレクター

GetSystemWow64Directory

Wow64DisableWow64FsRedirection

Wow64RevertWow64FsRedirection