Condividi tramite


Funzione OpenFile (winbase.h)

Crea, apre, riapri o elimina un file.

Nota Questa funzione ha funzionalità limitate e non è consigliata. Per lo sviluppo di nuove applicazioni, usare la funzione CreateFile .
 

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
OF_CANCEL
0x00000800
Ignorato.

Per produrre una finestra di dialogo contenente un pulsante Annulla , usare OF_PROMPT.

OF_CREATE
0x00001000
Crea un nuovo file.

Se il file esiste, viene troncato a zero (0).

OF_DELETE
0x00000200
Elimina un file.
OF_EXIST
0x00004000
Apre un file e quindi lo chiude.

Usare questa opzione per testare l'esistenza di un file.

OF_PARSE
0x00000100
Riempie la struttura OFSTRUCT , ma non fa altro.
OF_PROMPT
0x00002000
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.

OF_READ
0x00000000
Apre un file per la sola lettura.
OF_READWRITE
0x00000002
apre un file con le autorizzazioni di lettura/scrittura.
OF_REOPEN
0x00008000
Apre un file usando le informazioni nel buffer di riapertura.
OF_SHARE_COMPAT
0x00000000
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.

OF_SHARE_DENY_NONE
0x00000040
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.

OF_SHARE_DENY_READ
0x00000030
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 .

OF_SHARE_DENY_WRITE
0x00000020
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 .

OF_SHARE_EXCLUSIVE
0x00000010
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.
OF_VERIFY
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.

OF_WRITE
0x00000001
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:

  1. Directory in cui viene caricata un'applicazione.
  2. La directory corrente.
  3. Directory del sistema Windows.

    Usare la funzione GetSystemDirectory per ottenere il percorso di questa directory.

  4. Directory di sistema Windows a 16 bit.

    Non esiste una funzione che recupera il percorso di questa directory, ma viene eseguita la ricerca.

  5. La directory Windows.

    Usare la funzione GetWindowsDirectory per ottenere il percorso di questa directory.

  6. Directory elencate nella variabile di ambiente PATH.
Il parametro lpFileName non può contenere caratteri jolly.

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
Failover trasparente SMB 3.0 (TFO)
SMB 3.0 con condivisioni file con scalabilità orizzontale (SO)
File system del volume condiviso del cluster (CsvFS)
File system resiliente (ReFS)
 

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

Vedere anche

CreateFile

Funzioni di gestione file

GetSystemDirectory

GetWindowsDirectory

OFSTRUCT

Searchpath