Condividi tramite


Funzione LZOpenFileA (lzexpand.h)

Crea, apre, riapri o elimina il file specificato.

Sintassi

INT LZOpenFileA(
  [in]  LPSTR      lpFileName,
  [out] LPOFSTRUCT lpReOpenBuf,
  [in]  WORD       wStyle
);

Parametri

[in] lpFileName

Nome del file.

[out] lpReOpenBuf

Puntatore alla struttura OFSTRUCT che deve ricevere informazioni sul file quando il file viene aperto per la prima volta. La struttura può essere usata nelle chiamate successive alla funzione LZOpenFile per visualizzare il file aperto.

Il membro szPathName di questa struttura contiene caratteri dal set di caratteri OEM (Original Equipment Manufacturer).

[in] wStyle

Azione da intraprendere. Questo parametro può essere uno o più dei valori seguenti.

Valore Significato
OF_CANCEL
0x0800
Ignorato. Fornito solo per la compatibilità con Windows a 16 bit. Usare lo stile OF_PROMPT per visualizzare una finestra di dialogo contenente un pulsante Annulla .
OF_CREATE
0x1000
Indirizza LZOpenFile per creare un nuovo file. Se il file esiste già, viene troncato a lunghezza zero.
OF_DELETE
0x0200
Elimina il file.
OF_EXIST
0x4000
Apre il file e quindi lo chiude per verificare l'esistenza di un file.
OF_PARSE
0x0100
Riempie la struttura OFSTRUCT ma non esegue alcuna altra azione.
OF_PROMPT
0x2000
Visualizza una finestra di dialogo se il file richiesto non esiste. La finestra di dialogo informa l'utente che il sistema non riesce a trovare il file e contiene pulsanti Retry e Cancel . Facendo clic sul pulsante Annulla viene diretto LZOpenFile per restituire un file non trovato messaggio di errore.
OF_READ
0x0000
Apre il file in sola lettura.
OF_READWRITE
0x0002
Apre il file per la lettura e la scrittura.
OF_REOPEN
0x8000
Apre il file usando le informazioni nel buffer di riapertura.
OF_SHARE_DENY_NONE
0x0040
Apre il file senza negare ad altri processi l'accesso in lettura o scrittura al file. LZOpenFile ha esito negativo se il file è stato aperto in modalità di compatibilità da qualsiasi altro processo.
OF_SHARE_DENY_READ
0x0030
Apre il file e nega ad altri processi l'accesso in lettura al file. LZOpenFile ha esito negativo se il file è stato aperto in modalità di compatibilità o è stato aperto per l'accesso in lettura da qualsiasi altro processo.
OF_SHARE_DENY_WRITE
0x0020
Apre il file e nega l'accesso in scrittura ad altri processi al file. LZOpenFile ha esito negativo se il file è stato aperto in modalità di compatibilità o è stato aperto per l'accesso in scrittura da qualsiasi altro processo.
OF_SHARE_EXCLUSIVE
0x0010
Apre il file in modalità esclusiva, negando ad altri processi l'accesso in lettura e scrittura al file. LZOpenFile non riesce se il file è stato aperto in qualsiasi altra modalità per l'accesso in lettura o scrittura, anche dal processo corrente.
OF_WRITE
0x0001
Apre il file per la sola scrittura.

Valore restituito

Se la funzione ha esito positivo e il valore specificato dal parametro wStyle non è OF_READ, il valore restituito è un handle che identifica il file. Se il file viene compresso e aperto con wStyle impostato su OF_READ, il valore restituito è un handle di file speciale.

Se la funzione ha esito negativo, il valore restituito è un codice LZERROR_* . Questi codici hanno valori inferiori a zero. Non sono presenti informazioni di errore estese per questa funzione; non chiamare GetLastError.

NotaLZOpenFile chiama né SetLastError né SetLastErrorEx; pertanto, l'errore non influisce sul codice dell'ultimo errore di un thread.
 
Di seguito è riportato l'elenco dei codici di errore che LZOpenFile può restituire al momento dell'errore.
Codice/valore restituito Descrizione
LZERROR_BADINHANDLE
-1
L'handle che identifica il file di origine non è valido. Impossibile leggere il file.
LZERROR_GLOBALLOC
-5
Il numero massimo di file compressi aperti è stato superato o non è possibile allocare memoria locale.

Commenti

Se il parametro wStyle è il flag OF_READ (o OF_READ e uno dei flag OF_SHARE_* ) e il file viene compresso, LZOpenFile chiama la funzione LZInit , che esegue l'inizializzazione necessaria per le operazioni di decompressione.

L'handle restituito da questa funzione è compatibile solo con le funzioni in Lz32.dll; non deve essere usato per altre operazioni di file.

Se LZOpenFile non è in grado di aprire il file specificato da lpFileName, in alcune versioni di Windows tenta di aprire un file con quasi lo stesso nome di file, ad eccezione dell'ultimo carattere viene sostituito con un carattere di sottolineatura (""). Pertanto, se un tentativo di apertura "MyProgram.exe" ha esito negativo, LZOpenFile tenta di aprire "MyProgram.ex". I pacchetti di installazione spesso sostituiscono il carattere di sottolineatura per l'ultima lettera di un'estensione del nome file per indicare che il file è compresso. Ad esempio, "MyProgram.exe" compresso potrebbe essere denominato "MyProgram.ex_". Per determinare il nome del file aperto (se presente), esaminare il membro szPathName della struttura OFSTRUCT nel parametro lpReOpenBuf .

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 cluster (CsvFS)
Resilient File System (ReFS)
 

CsvFs eseguirà operazioni di I/O reindirizzate per i file compressi.

Nota

L'intestazione lzexpand.h definisce LZOpenFile come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione lzexpand.h (include Windows.h)
Libreria Lz32.lib
DLL Lz32.dll

Vedi anche

Compressione e decompressione dei file

Funzioni di gestione file

LZClose

LZInit

LZRead

OFSTRUCT