Freigeben über


Wow64DisableWow64FsRedirection-Funktion (wow64apiset.h)

Deaktiviert die Dateisystemumleitung für den aufrufenden Thread. Die Dateisystemumleitung ist standardmäßig aktiviert.

Syntax

BOOL Wow64DisableWow64FsRedirection(
  [out] PVOID *OldValue
);

Parameter

[out] OldValue

Der WOW64-Dateisystemumleitungswert. Das System verwendet diesen Parameter, um Informationen zu speichern, die für rückgängig machen Dateisystemumleitung erforderlich sind.

Hinweis Dieser Wert ist nur für die Systemverwendung vorgesehen. Um unvorhersehbares Verhalten zu vermeiden, ändern Sie diesen Wert in keiner Weise.
 

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein Nichtzero-Wert.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Diese Funktion ist nützlich für 32-Bit-Anwendungen, die Zugriff auf das systemeigene System32-Verzeichnis erhalten möchten. Standardmäßig ist die WOW64-Dateisystemumleitung aktiviert.

Das Wow64DisableWow64FsRedirection/Wow64RevertWow64FsRedirection-Funktionspaar ist ein Ersatz für die Funktionalität der Wow64EnableWow64FsRedirection-Funktion .

Um die Dateisystemumleitung wiederherzustellen, rufen Sie die Funktion Wow64RevertWow64FsRedirection auf . Jeder erfolgreiche Aufruf der Wow64DisableWow64FsRedirection-Funktion muss einen übereinstimmenden Aufruf der Wow64RevertWow64FsRedirection-Funktion aufweisen. Dadurch wird sichergestellt, dass die Umleitung wieder aktiviert wird und zugeordnete Systemressourcen freigegeben werden.

Hinweis Die Wow64DisableWow64FsRedirection-Funktion wirkt sich auf alle Dateivorgänge aus, die vom aktuellen Thread ausgeführt werden, was unbeabsichtigte Folgen haben kann, wenn die Dateisystemumleitung für einen beliebigen Zeitraum deaktiviert ist. Beispielsweise hängt das Laden von DLL von der Dateisystemumleitung ab, sodass das Deaktivieren der Dateisystemumleitung zu einem Fehler beim Laden der DLL führt. Außerdem verwenden viele Featureimplementierungen verzögertes Laden und schlagen fehl, während die Umleitung deaktiviert ist. Der Fehlerzustand des anfänglichen Verzögerungsladevorgangs wird beibehalten, sodass bei jeder nachfolgenden Verwendung der Funktion verzögerungsladen auch nach der wieder aktivierten Dateisystemumleitung ein Fehler auftritt. Um diese Probleme zu vermeiden, deaktivieren Sie die Dateisystemumleitung unmittelbar vor Aufrufen bestimmter Datei-E/A-Funktionen (z. B . CreateFile), die nicht umgeleitet werden dürfen, und aktivieren Sie die Dateisystemumleitung direkt danach mit Wow64RevertWow64FsRedirection erneut.
 
Das Deaktivieren der Dateisystemumleitung wirkt sich nur auf Vorgänge aus, die vom aktuellen Thread ausgeführt werden. Einige Funktionen, z. B . CreateProcessAsUser, führen ihre Arbeit an einem anderen Thread aus, der nicht vom Zustand der Dateisystemumleitung im aufrufenden Thread betroffen ist.

Unter Windows 8 und Windows Server 2012 wird diese Funktion von den folgenden Technologien unterstützt.

Technologie Unterstützt
SMB 3.0-Protokoll (Server Message Block) No
SMB 3.0 Transparent Failover (TFO) No
SMB 3.0 mit Dateifreigaben mit horizontaler Skalierung (SO) No
Dateisystem mit freigegebenen Clustervolumes (CsvFS) Ja
Robustes Dateisystem (Resilient File System, ReFS) Nein
 

Beispiele

Im folgenden Beispiel wird Wow64DisableWow64FsRedirection verwendet, um die Dateisystemumleitung zu deaktivieren, sodass eine 32-Bit-Anwendung, die unter WOW64 ausgeführt wird, die 64-Bit-Version von Notepad.exe in %SystemRoot%\System32 öffnen kann, anstatt zur 32-Bit-Version in %SystemRoot%\SysWOW64 umgeleitet zu werden.

#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
    }
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista, Windows XP Professional x64 Edition [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008, Windows Server 2003 mit SP1 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile wow64apiset.h (einschließlich Windows.h)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

Dateiverwaltungsfunktionen

Dateisystemumleitung

Wow64EnableWow64FsRedirection

Wow64RevertWow64FsRedirection