Funzione OpenFile (winbase.h)
Crea, apre, riapri o elimina un file.
Sintassi
HFILE OpenFile(
[in] LPCSTR lpFileName,
[out] LPOFSTRUCT lpReOpenBuff,
[in] UINT uStyle
);
Parametri
[in] lpFileName
Nome del file.
La stringa deve essere costituita da caratteri dal set di caratteri Windows a 8 bit. La funzione OpenFile non supporta i nomi di file Unicode o l'apertura di named pipe.
[out] lpReOpenBuff
Puntatore alla struttura OFSTRUCT che riceve informazioni su un file quando viene aperto per la prima volta.
La struttura può essere usata nelle chiamate successive alla funzione OpenFile per visualizzare un file aperto.
La struttura OFSTRUCT contiene un membro stringa di percorso con lunghezza limitata a OFS_MAXPATHNAME caratteri, ovvero 128 caratteri. A causa di questo, non è possibile usare la funzione OpenFile per aprire un file con una lunghezza del percorso superiore a 128 caratteri. La funzione CreateFile non ha questa limitazione della lunghezza del percorso.
[in] uStyle
Azione da intraprendere.
Questo parametro può essere uno o più dei valori seguenti.
Valore | Significato |
---|---|
|
Ignorato.
Per produrre una finestra di dialogo contenente un pulsante Annulla , usare OF_PROMPT. |
|
Crea un nuovo file.
Se il file esiste, viene troncato a zero (0). |
|
Elimina un file. |
|
Apre un file e quindi lo chiude.
Usare questa opzione per testare l'esistenza di un file. |
|
Riempie la struttura OFSTRUCT , ma non fa altro. |
|
Visualizza una finestra di dialogo se non esiste un file richiesto.
Una finestra di dialogo informa un utente che il sistema non riesce a trovare un file e contiene pulsanti Retry e Cancel . Il pulsante Annulla indirizza OpenFile per restituire un messaggio di errore non trovato. |
|
Apre un file per la sola lettura. |
|
apre un file con le autorizzazioni di lettura/scrittura. |
|
Apre un file usando le informazioni nel buffer di riapertura. |
|
Per i file system basati su MS-DOS, apre un file con modalità di compatibilità, consente a qualsiasi processo in un computer specificato di aprire il file in qualsiasi numero di volte.
Altri sforzi per aprire un file con altre modalità di condivisione hanno esito negativo. Questo flag viene mappato ai flag FILE_SHARE_READ FILE_SHARE_WRITE| della funzione CreateFile. |
|
Apre un file senza negare l'accesso in lettura o scrittura ad altri processi.
Nei file system basati su MS-DOS, se il file è stato aperto in modalità di compatibilità da qualsiasi altro processo, la funzione ha esito negativo. Questo flag viene mappato ai flag FILE_SHARE_READ FILE_SHARE_WRITE| della funzione CreateFile. |
|
Apre un file e nega l'accesso in lettura ad altri processi.
Nei file system basati su MS-DOS, se il file è stato aperto in modalità di compatibilità o per l'accesso in lettura da qualsiasi altro processo, la funzione ha esito negativo. Questo flag viene mappato al flag FILE_SHARE_WRITE della funzione CreateFile . |
|
Apre un file e nega l'accesso in scrittura ad altri processi.
Nei file system basati su MS-DOS, se un file è stato aperto in modalità di compatibilità o per l'accesso in scrittura da qualsiasi altro processo, la funzione ha esito negativo. Questo flag viene mappato al flag FILE_SHARE_READ della funzione CreateFile . |
|
Apre un file con modalità esclusiva e nega l'accesso in lettura/scrittura ad altri processi. Se un file è stato aperto in qualsiasi altra modalità per l'accesso in lettura/scrittura, anche dal processo corrente, la funzione ha esito negativo. |
|
Verifica che la data e l'ora di un file siano uguali a quando è stata aperta in precedenza.
Questo è utile come controllo aggiuntivo per i file di sola lettura. |
|
apre un file solo per l'accesso in scrittura. |
Valore restituito
Se la funzione ha esito positivo, il valore restituito specifica un handle di file da usare durante l'esecuzione di I/O file. Per chiudere il file, chiamare la funzione CloseHandle usando questo handle.
Se la funzione ha esito negativo, il valore restituito è HFILE_ERROR. Per informazioni dettagliate sull'errore, chiamare GetLastError.
Commenti
Se il parametro lpFileName specifica solo un nome file e un'estensione, questa funzione cerca un file corrispondente nelle directory seguenti e nell'ordine illustrato:
- Directory in cui viene caricata un'applicazione.
- La directory corrente.
-
Directory del sistema Windows.
Usare la funzione GetSystemDirectory per ottenere il percorso di questa directory.
-
Directory di sistema Windows a 16 bit.
Non esiste una funzione che recupera il percorso di questa directory, ma viene eseguita la ricerca.
-
La directory Windows.
Usare la funzione GetWindowsDirectory per ottenere il percorso di questa directory.
- Directory elencate nella variabile di ambiente PATH.
La funzione OpenFile non supporta il flag di OF_SEARCH supportato dalla funzione Windows OpenFile a 16 bit. Il flag OF_SEARCH indirizza il sistema alla ricerca di un file corrispondente anche quando un nome file include un percorso completo. Usare la funzione SearchPath per cercare un file.
Una violazione di condivisione si verifica se viene eseguito un tentativo di aprire un file o una directory per l'eliminazione in un computer remoto quando il valore del parametro uStyle è il flag di accesso OF_DELETE or'ed con qualsiasi altro flag di accesso e il file o la directory remota non è stata aperta con FILE_SHARE_DELETE accesso alla condivisione. Per evitare la violazione di condivisione in questo scenario, aprire il file o la directory remota con l'accesso solo OF_DELETE o chiamare DeleteFile senza prima aprire il file o la directory per l'eliminazione.
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 con scalabilità orizzontale (SO) | Sì |
File system del volume condiviso del cluster (CsvFS) | Sì |
File system resiliente (ReFS) | Sì |
CsvFs eseguirà il reindirizzamento di I/O per i file compressi.
Requisiti
Client minimo supportato | Windows XP [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 |