Funzione ReOpenFile (winbase.h)
Riapri l'oggetto file system specificato con diritti di accesso diversi, modalità di condivisione e flag.
Sintassi
HANDLE ReOpenFile(
[in] HANDLE hOriginalFile,
[in] DWORD dwDesiredAccess,
[in] DWORD dwShareMode,
[in] DWORD dwFlagsAndAttributes
);
Parametri
[in] hOriginalFile
Handle per l'oggetto da riaprire. L'oggetto deve essere stato creato dalla funzione CreateFile .
[in] dwDesiredAccess
Accesso obbligatorio all'oggetto. Per un elenco di valori, vedere Sicurezza file e diritti di accesso. Non è possibile richiedere una modalità di accesso in conflitto con la modalità di condivisione specificata in una richiesta aperta precedente il cui handle è ancora aperto.
Se questo parametro è zero (0), l'applicazione può eseguire query sugli attributi del dispositivo senza accedere al dispositivo. Questo è utile se un'applicazione vuole determinare le dimensioni di un'unità disco floppy e i formati supportati senza richiedere un floppy nell'unità.
[in] dwShareMode
Modalità di condivisione dell'oggetto. Non è possibile richiedere una modalità di condivisione in conflitto con la modalità di accesso specificata in una richiesta aperta precedente il cui handle è ancora aperto.
Se questo parametro è zero (0) e CreateFile ha esito positivo, l'oggetto non può essere condiviso e non può essere aperto di nuovo finché l'handle non viene chiuso.
Per consentire ad altri processi di condividere l'oggetto durante l'apertura del processo, usare una combinazione di uno o più dei valori seguenti per specificare il tipo di accesso che possono richiedere quando aprono l'oggetto. Queste opzioni di condivisione rimangono effettive finché non si chiude l'handle all'oggetto.
[in] dwFlagsAndAttributes
Flag di file. Questo parametro può essere uno o più dei valori seguenti.
Valore | Significato |
---|---|
|
Indica che il file viene aperto o creato per un'operazione di backup o ripristino. Il sistema garantisce che il processo chiamante esegue l'override dei controlli di sicurezza dei file, purché disponga dei privilegi di SE_BACKUP_NAME e SE_RESTORE_NAME . Per altre informazioni, vedere Modifica dei privilegi in un token.
È anche possibile impostare questo flag per ottenere un handle su una directory. Se indicato, un handle di directory può essere passato ad alcune funzioni al posto di un handle di file. |
|
Indica che il sistema operativo deve eliminare il file immediatamente dopo che tutti i relativi handle sono stati chiusi, non solo l'handle specificato, ma anche qualsiasi altro handle aperto o duplicato.
Le richieste aperte successive per il file non riescono, a meno che non venga usato FILE_SHARE_DELETE . |
|
Indica al sistema di aprire il file senza buffer intermedio o memorizzazione nella cache. Se combinato con FILE_FLAG_OVERLAPPED, il flag offre prestazioni asincrone massime, perché l'I/O non si basa sulle operazioni sincrone della gestione memoria. Tuttavia, alcune operazioni di I/O richiedono più tempo, perché i dati non vengono mantenuti nella cache.
Un'applicazione deve soddisfare requisiti specifici quando si aprono i file aperti con FILE_FLAG_NO_BUFFERING:
Un'applicazione può determinare una dimensione del settore del volume chiamando la funzione GetDiskFreeSpace . |
|
Indica che i dati del file vengono richiesti, ma devono continuare a risiedere nell'archiviazione remota. Non deve essere trasportato nuovamente all'archiviazione locale. Questo flag è destinato all'uso da parte dei sistemi di archiviazione remota. |
|
Quando viene usato questo flag, l'elaborazione normale del punto di ripristino non si verifica e ReOpenFile tenta di aprire il punto di ripristino. Quando viene aperto un file, viene restituito un handle di file, indipendentemente dal fatto che il filtro che controlla il punto di ripristino sia operativo. Questo flag non può essere usato con il flag di CREATE_ALWAYS . Se il file non è un punto di correzione, questo flag viene ignorato. |
|
Indica al sistema di inizializzare l'oggetto, in modo che le operazioni che richiedono un tempo significativo per elaborare ERROR_IO_PENDING. Al termine dell'operazione, l'evento specificato viene impostato sullo stato segnalato.
Quando si specifica FILE_FLAG_OVERLAPPED, le funzioni di lettura e scrittura del file devono specificare una struttura OVERLAPPED . Ovvero, quando viene specificato FILE_FLAG_OVERLAPPED , un'applicazione deve eseguire la lettura e la scrittura sovrapposte. Quando viene specificato FILE_FLAG_OVERLAPPED , il sistema non mantiene il puntatore al file. La posizione del file deve essere passata come parte del parametro lpOverlapped (che punta a una struttura OVERLAPPED ) alle funzioni di lettura e scrittura del file. Questo flag consente anche l'esecuzione simultanea di più operazioni con l'handle (un'operazione di lettura e scrittura simultanea, ad esempio). |
|
Indica che il file deve essere accessibile in base alle regole POSIX. Ciò include l'autorizzazione di più file con nomi, diversi solo nel caso, per i file system che supportano tale denominazione. Usare attenzione quando si usa questa opzione perché i file creati con questo flag potrebbero non essere accessibili dalle applicazioni scritte per MS-DOS o Windows a 16 bit. |
|
Indica l'accesso casuale al file. Il sistema può interpretare questa situazione come hint per l'ottimizzazione della memorizzazione del file nella cache. |
|
Indica che l'accesso del file deve avvenire in modo sequenziale dall'inizio alla fine. Il sistema può interpretare questa situazione come hint per l'ottimizzazione della memorizzazione del file nella cache. Se un'applicazione sposta il puntatore a file per l'accesso casuale, la cache potrebbe non essere ottimale ma l'operazione viene comunque garantita.
La specifica di questo flag può migliorare le prestazioni per le applicazioni che leggono file di grandi dimensioni usando l'accesso sequenziale. I miglioramenti delle prestazioni possono essere ancora più evidenti per le applicazioni che leggono file di grandi dimensioni principalmente in sequenza, ma occasionalmente ignorano intervalli di byte ridotti. |
|
Indica al sistema di scrivere tramite qualsiasi cache intermedia e passare direttamente al disco. Il sistema può comunque memorizzare nella cache le operazioni di scrittura, ma non è possibile scaricarle in modo differimento. |
Se l'handle rappresenta il lato client di una named pipe, il parametro dwFlags può contenere anche informazioni sulla qualità del servizio di sicurezza. Per altre informazioni, vedere Livelli di rappresentazione. Quando l'applicazione chiamante specifica il flag SECURITY_SQOS_PRESENT , il parametro dwFlags può contenere uno o più dei valori seguenti.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è un handle aperto per il file specificato.
Se la funzione ha esito negativo, il valore restituito viene INVALID_HANDLE_VALUE. Per informazioni dettagliate sull'errore, chiamare GetLastError.
Commenti
Il parametro dwFlags non può contenere alcun flag di attributo file (FILE_ATTRIBUTE_*). Questi valori possono essere specificati solo quando viene creato il file.
In Windows 8 e Windows Server 2012 questa funzione è supportata dalle tecnologie seguenti.
Tecnologia | Supportato |
---|---|
Protocollo SMB (Server Message Block) 3.0 | Sì |
Failover trasparente SMB 3.0 (TFO) | Sì |
SMB 3.0 con condivisioni file di scalabilità orizzontale (SO) | Sì |
File system del volume condiviso cluster (CsvFS) | Sì |
Resilient File System (ReFS) | Sì |
Requisiti
Client minimo supportato | Windows Vista [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | winbase.h (include Windows.h) |
Libreria | Kernel32.lib |
DLL | Kernel32.dll |