LZOpenFileA 函式 (lzexpand.h)

建立、開啟、重新開啟或刪除指定的檔案。

語法

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

參數

[in] lpFileName

檔案的名稱。

[out] lpReOpenBuf

OFSTRUCT 結構的指標,這是在檔案第一次開啟時接收檔案的相關信息。 結構可用於 LZOpenFile 函式的後續呼叫,以查看開啟的檔案。

此結構的 szPathName 成員包含原始設備製造商 (OEM) 字元集的字元。

[in] wStyle

要採取的動作。 此參數可以是下列一或多個值。

意義
OF_CANCEL
0x0800
忽略。 僅針對與16位 Windows 的相容性提供。 使用 OF_PROMPT 樣式來顯示包含 [取消 ] 按鈕的對話方塊。
OF_CREATE
0x1000
指示 LZOpenFile 建立新的檔案。 如果檔案已經存在,則會截斷為零長度。
OF_DELETE
0x0200
刪除檔案。
OF_EXIST
0x4000
開啟檔案,然後關閉檔案,以測試檔案是否存在。
OF_PARSE
0x0100
填滿 OFSTRUCT 結構,但不會執行其他動作。
OF_PROMPT
0x2000
如果要求的檔案不存在,則會顯示對話方塊。 對話框會通知使用者系統找不到檔案,且其中包含 [重試 ] 和 [ 取消] 按鈕。 按兩下 [ 取消] 按鈕會指示 LZOpenFile 傳回找不到的檔案錯誤訊息。
OF_READ
0x0000
開啟檔案為僅供讀取。
OF_READWRITE
0x0002
開啟檔案以供讀取和寫入。
OF_REOPEN
0x8000
使用重新開啟緩衝區中的資訊開啟檔案。
OF_SHARE_DENY_NONE
0x0040
開啟檔案,而不拒絕其他進程讀取或寫入檔案的存取權。 如果檔案已由任何其他進程以相容性模式開啟,LZOpenFile 就會失敗。
OF_SHARE_DENY_READ
0x0030
開啟檔案,並拒絕其他進程讀取檔案的存取權。 如果檔案已以相容性模式開啟,或已開啟以供任何其他進程讀取存取,LZOpenFile 就會失敗。
OF_SHARE_DENY_WRITE
0x0020
開啟檔案,並拒絕其他進程寫入檔案的存取權。 LZOpenFile 如果檔案已以相容性模式開啟,或已開啟以供任何其他進程寫入存取,則 LZOpenFile 會失敗。
OF_SHARE_EXCLUSIVE
0x0010
以獨佔模式開啟檔案,拒絕對檔案的讀取和寫入存取權。 LZOpenFile 如果檔案已在任何其他模式中開啟以供讀取或寫入存取,即使目前進程也失敗。
OF_WRITE
0x0001
開啟檔案為僅供寫入。

傳回值

如果函式成功,且 wStyle 參數指定的值未 OF_READ,則傳回值是識別檔案的句柄。 如果檔案已壓縮並開啟, 且 wStyle 設定為 OF_READ,則傳回值是特殊的檔句柄。

如果函式失敗,則傳回值是 LZERROR_* 程序代碼。 這些代碼的值小於零。 此函式沒有擴充的錯誤資訊;請勿呼叫 GetLastError

注意LZOpenFile 不會呼叫 SetLastErrorSetLastErrorEx;因此,其失敗不會影響線程的最後一個錯誤碼。
 
以下是 LZOpenFile 在失敗時可傳回的錯誤碼清單。
傳回碼/值 Description
LZERROR_BADINHANDLE
-1
識別來源檔案的句柄無效。 無法讀取檔案。
LZERROR_GLOBALLOC
-5
已超過開啟壓縮檔案的數目上限,或無法配置本機記憶體。

備註

如果 wStyle 參數是 OF_READ 旗標 (或 OF_READ ,以及任何 OF_SHARE_* 旗標) ,且檔案已壓縮, LZOpenFile 會呼叫 LZInit 函式,這會執行解壓縮作業所需的初始化。

此函式傳回的句柄只與 Lz32.dll 中的函式相容;它不應該用於其他檔案作業。

如果 LZOpenFile 無法開啟 lpFileName 所指定的檔案,在某些版本的 Windows 上,它會嘗試以幾乎相同的檔名開啟檔案,但最後一個字元會取代為底線 (“”“) 。因此,如果嘗試開啟 「MyProgram.exe」 失敗, LZOpenFile 會嘗試開啟 「MyProgram.ex」。。 安裝套件通常會以擴展名的最後一個字母取代底線,以指出檔案已壓縮。 例如,壓縮的 「MyProgram.exe」 可能命名為 「MyProgram.ex_」。 若要判斷開啟的檔名, (是否有任何) ,請檢查 lpReOpenBuf 參數中 OFSTRUCT 結構的 szPathName 成員。

在 Windows 8 和 Windows Server 2012 中,下列技術支援此函式。

技術 支援
伺服器消息塊 (SMB) 3.0 通訊協定 Yes
SMB 3.0 透明故障轉移 (TFO) Yes
具有向外延展檔案共用的SMB 3.0 (SO) Yes
叢集共用磁碟區文件系統 (CsvFS) Yes
彈性檔案系統 (ReFS) Yes
 

CsvF 會針對壓縮檔進行重新導向的 IO。

注意

lzexpand.h 標頭會將 LZOpenFile 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 lzexpand.h (包含 Windows.h)
程式庫 Lz32.lib
Dll Lz32.dll

另請參閱

檔案壓縮和解壓縮

檔案管理功能

LZClose

LZInit

LZRead

OFSTRUCT