LZOpenFileA 関数 (lzexpand.h)

指定したファイルを作成、開く、再度開く、または削除します。

構文

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

パラメーター

[in] lpFileName

ファイルの名前です。

[out] lpReOpenBuf

ファイルが最初に開かれたときにファイルに関する情報を受け取る OFSTRUCT 構造体へのポインター。 構造体は、 LZOpenFile 関数の後続の呼び出しで使用して、開いているファイルを確認できます。

この構造体 の szPathName メンバーには、元の機器製造元 (OEM) の文字セットの文字が含まれています。

[in] wStyle

実行するアクション。 このパラメーターには、次の 1 つ以上の値を指定できます。

意味
OF_CANCEL
0x0800
無視されます。 16 ビット Windows との互換性のみを目的として提供されます。 [キャンセル] ボタンを含むダイアログ ボックスを表示するには、OF_PROMPT スタイルを使用します。
OF_CREATE
0x1000
新しいファイルを作成するように LZOpenFile に指示します。 ファイルが既に存在する場合は、長さが 0 に切り捨てられます。
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されていない場合、戻り値はファイルを識別するハンドルです。 ファイルが圧縮され、 wStyleOF_READ に設定されて開かれる場合、戻り値は特殊なファイル ハンドルになります。

関数が失敗した場合、戻り値は LZERROR_* コードです。 これらのコードの値は 0 未満です。 この関数の拡張エラー情報はありません。 GetLastError を呼び出さないでください。

LZOpenFile はSetLastError も SetLastErrorEx も呼び出しません。したがって、そのエラーはスレッドの最後のエラー コードには影響しません。
 
エラー時に LZOpenFile から返されるエラー コードの一覧を次に示します。
リターン コード/値 Description
LZERROR_BADINHANDLE
-1
ソース ファイルを識別するハンドルが無効です。 ファイルを読み取ることができません。
LZERROR_GLOBALLOC
-5
開いている圧縮ファイルの最大数を超えているか、ローカル メモリを割り当てることができません。

注釈

wStyle パラメーターが OF_READ フラグ (または OF_READ および OF_SHARE_* フラグのいずれか) で、ファイルが圧縮されている場合、LZOpenFileLZInit 関数を呼び出し、展開操作に必要な初期化を実行します。

この関数が返すハンドルは、Lz32.dll の関数とのみ互換性があります。他のファイル操作には使用しないでください。

LZOpenFilelpFileName で指定されたファイルを開けない場合、Windows の一部のバージョンでは、最後の文字がアンダースコア ("") に置き換えられる点を除き、ほぼ同じファイル名のファイルを開こうとします。したがって、"MyProgram.exe" を開こうとすると、LZOpenFile は "MyProgram.ex" を開こうとします。 多くの場合、インストール パッケージは、ファイルが圧縮されていることを示すために、ファイル名拡張子の最後の文字にアンダースコアを置き換えます。 たとえば、"MyProgram.exe" 圧縮には "MyProgram.ex_" という名前を付ける場合があります。 開いたファイルの名前 (存在する場合) を確認するには、lpReOpenBuf パラメーターの OFSTRUCT 構造体の szPathName メンバーを調べます。

Windows 8 と Windows Server 2012 では、この関数は、次のテクノロジによってサポートされています。

テクノロジ サポートされています
サーバー メッセージ ブロック (SMB) 3.0 プロトコル はい
SMB 3.0 Transparent Failover (TFO) はい
スケールアウト ファイル共有 (SO) を使う SMB 3.0 はい
クラスターの共有ボリューム ファイル システム (CsvFS) はい
Resilient File System (ReFS) はい
 

CsvFs によって、圧縮されたファイルのリダイレクトされた IO が実行されます。

注意

lzexpand.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして LZOpenFile を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー lzexpand.h (Windows.h を含む)
Library Lz32.lib
[DLL] Lz32.dll

こちらもご覧ください

ファイルの圧縮と圧縮解除

File Management 関数

LZClose

LZInit

LZRead

OFSTRUCT