Condividi tramite


Funzione Wow64DisableWow64FsRedirection (wow64apiset.h)

Disabilita il reindirizzamento del file system per il thread chiamante. Il reindirizzamento del file system è abilitato per impostazione predefinita.

Sintassi

BOOL Wow64DisableWow64FsRedirection(
  [out] PVOID *OldValue
);

Parametri

[out] OldValue

Valore di reindirizzamento del file system WOW64. Il sistema usa questo parametro per archiviare le informazioni necessarie per ripristinare (riabilitare) il reindirizzamento del file system.

Nota Questo valore è solo per l'uso del sistema. Per evitare comportamenti imprevedibili, non modificare questo valore in alcun modo.
 

Valore restituito

Se la funzione ha esito positivo, il valore restituito è un valore diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

Questa funzione è utile per le applicazioni a 32 bit che vogliono ottenere l'accesso alla directory system32 nativa. Per impostazione predefinita, il reindirizzamento del file system WOW64 è abilitato.

L'associazione di funzioni Wow64DisableWow64FsRedirection/Wow64RevertWow64FsRedirection è una sostituzione della funzionalità della funzione Wow64EnableWow64FsRedirection .

Per ripristinare il reindirizzamento del file system, chiamare la funzione Wow64RevertWow64FsRedirection . Ogni chiamata riuscita alla funzione Wow64DisableWow64FsRedirection deve avere una chiamata corrispondente alla funzione Wow64RevertWow64FsRedirection . In questo modo, il reindirizzamento viene riabilitata e libera le risorse di sistema associate.

Nota La funzione Wow64DisableWow64FsRedirection influisce su tutte le operazioni di file eseguite dal thread corrente, che possono avere conseguenze impreviste se il reindirizzamento del file system è disabilitato per qualsiasi intervallo di tempo. Ad esempio, il caricamento della DLL dipende dal reindirizzamento del file system, quindi la disabilitazione del reindirizzamento del file system causerà l'esito negativo del caricamento della DLL. Inoltre, molte implementazioni delle funzionalità usano il caricamento ritardato e avranno esito negativo mentre il reindirizzamento è disabilitato. Lo stato di errore dell'operazione di caricamento ritardo iniziale viene mantenuto, pertanto qualsiasi uso successivo della funzione di caricamento ritardato avrà esito negativo anche dopo la riattivazione del file system. Per evitare questi problemi, disabilitare immediatamente il reindirizzamento del file system prima delle chiamate a funzioni di I/O file specifiche (ad esempio CreateFile) che non devono essere reindirizzate e riabilitare il reindirizzamento del file system immediatamente dopo l'uso di Wow64RevertWow64FsRedirection.
 
La disabilitazione del reindirizzamento del file system influisce solo sulle operazioni effettuate dal thread corrente. Alcune funzioni, ad esempio CreateProcessAsUser, svolgono il loro lavoro su un altro thread, che non è interessato dallo stato del reindirizzamento del file system nel thread chiamante.

In Windows 8 e Windows Server 2012 questa funzione è supportata dalle tecnologie seguenti.

Tecnologia Supportato
Protocollo SMB (Server Message Block) 3.0 No
Failover trasparente SMB 3.0 (TFO) No
SMB 3.0 con condivisioni file con scalabilità orizzontale (SO) No
File system del volume condiviso del cluster (CsvFS)
File system resiliente (ReFS) No
 

Esempio

L'esempio seguente usa Wow64DisableWow64FsRedirection per disabilitare il reindirizzamento del file system in modo che un'applicazione a 32 bit in esecuzione in WOW64 possa aprire la versione a 64 bit di Notepad.exe in %SystemRoot%\System32 anziché essere reindirizzata alla versione a 32 bit in %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
    }
}

Requisiti

Requisito Valore
Client minimo supportato Windows Vista, Windows XP Professional x64 Edition [solo app desktop]
Server minimo supportato Windows Server 2008, Windows Server 2003 con SP1 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione wow64apiset.h (include Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

Funzioni di gestione file

Reindirizzamento file system

Wow64EnableWow64FsRedirection

Wow64RevertWow64FsRedirection