共用方式為


LZOpenFileW 函式 (lzexpand.h)

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

語法

INT LZOpenFileW(
  [in]  LPWSTR     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會失敗。
OF_SHARE_EXCLUSIVE
0x0010
以獨佔模式開啟檔案,拒絕檔案的讀取和寫入存取權。 如果檔案已以任何其他模式開啟以供讀取或寫入存取,即使目前進程也一樣,LZOpenFile會失敗。
OF_WRITE
0x0001
開啟檔案為僅供寫入。

傳回值

如果函式成功,且 wStyle 參數指定的值未 OF_READ,則傳回值會是識別檔案的控制碼。 如果壓縮並開啟檔案, 並將 wStyle 設定為 OF_READ,則傳回值是特殊的檔案控制代碼。

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

注意LZOpenFile 不會呼叫 SetLastErrorSetLastErrorEx;因此,其失敗不會影響執行緒的最後一個錯誤碼。
 
以下是 LZOpenFile 在失敗時可傳回的錯誤碼清單。
傳回碼/值 描述
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 通訊協定
SMB 3.0 透明容錯移轉 (TFO)
具有向外延展檔案共用的 SMB 3.0 (SO)
叢集共用磁片區檔案系統 (CsvFS)
彈性檔案系統 (ReFS)
 

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