Funzione LZOpenFileW (lzexpand.h)

Crea, apre, riapre o elimina il file specificato.

Sintassi

INT LZOpenFileW(
  [in]  LPWSTR     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 al primo apertura del file. La struttura può essere usata nelle chiamate successive alla funzione LZOpenFile per visualizzare il file aperto.

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

[in] wStyle

Azione da eseguire. 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. Utilizzare 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 lo chiude per verificare l'esistenza di un file.
OF_PARSE
0x0100
Riempie la struttura OFSTRUCT ma non esegue altre azioni.
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 i pulsanti Riprova e Annulla . Facendo clic sul pulsante Annulla viene visualizzato il messaggio di errore LZOpenFile per restituire un file non trovato.
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 ad altri processi l'accesso in scrittura 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 ha esito negativo 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 è 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 minori di zero. Non sono presenti informazioni di errore estese per questa funzione; non chiamare GetLastError.

NotaLZOpenFile chiama né SetLastErrorSetLastErrorEx; pertanto, il suo errore non influisce sul codice di ultimo errore di un thread.
 
Di seguito è riportato l'elenco dei codici di errore che LZOpenFile può restituire in caso di 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
È stato superato il numero massimo di file compressi aperti 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 è 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 lo stesso nome di file, ad eccezione dell'ultimo carattere viene sostituito con un carattere di sottolineatura (""). Pertanto, se un tentativo di apertura di "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 di 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 di 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.

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 preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

Requisiti

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

Vedi anche

Compressione e decompressione dei file

Funzioni di gestione file

LZClose

LZInit

LZRead

OFSTRUCT