SetupGetFileCompressionInfoW 関数 (setupapi.h)

[この機能は、[要件] セクションに示されているオペレーティング システムで使用できます。 今後のバージョンでは変更されるか、利用できなくなる場合もあります。 SetupAPI は、アプリケーションのインストールに使用されなくなりました。 代わりに、Windows インストーラーを使用してアプリケーション インストーラーを開発します。 SetupAPI は、引き続きデバイス ドライバーのインストールに使用されます。

SetupGetFileCompressionInfo 関数は、物理ファイルを調べて圧縮されているかどうかを判断し、圧縮されていないターゲット ファイルの完全なパス、サイズ、サイズを取得します。

この関数は古く、 SetupGetFileCompressionInfoEx に置き換えられていることに注意してください。 SetupGetFileCompressionInfo を使用しないでください。代わりに常に SetupGetFileCompressionInfoEx を使用してください。

構文

WINSETUPAPI DWORD SetupGetFileCompressionInfoW(
  [in]      PCWSTR SourceFileName,
  [in, out] PWSTR  *ActualSourceFileName,
  [in, out] PDWORD SourceFileSize,
  [in, out] PDWORD TargetFileSize,
  [in, out] PUINT  CompressionType
);

パラメーター

[in] SourceFileName

情報が必要なファイルのファイル名。 ファイルが名前付きとまったく同じソース メディアに見つからない場合、ファイルは最大 2 つの代替の "圧縮形式" 名で検索されます。 たとえば、ファイルが F:\x86\cmd.exe されていて見つからない場合、F:\mpis\cmd.ex_ が検索され、見つからない場合は F:\x86\cmd.ex$ を検索します。 null で終わる文字列を使用する必要があります。

[in, out] ActualSourceFileName

見つけることができたファイルの完全なパスを受け取る変数へのポインター。 呼び出し元は、 LocalFree の呼び出しでポインターを解放できます。 パスは、関数が NO_ERRORを返す場合にのみ有効です。 SetupAPI.dll のバージョンが 5.0.2195 未満の場合、呼び出し元は SetupAPI からエクスポートされた関数 MyFree を使用して、この関数によって割り当てられたメモリを解放し、 LocalFree を使用する必要があることに注意してください。 「解説」を参照してください。

[in, out] SourceFileSize

この関数が現在の形式のファイルのサイズを返す変数へのポインター。これは 、ActualSourceFileName という名前のファイルの現在のサイズです。 サイズは、ソース ファイルを調べることによって決まります。INF ファイルから取得されません。 ソース ファイル のサイズは、関数が NO_ERRORを返す場合にのみ有効です。

[in, out] TargetFileSize

この関数が圧縮解除またはコピーされるときにファイルが占有するサイズを返す変数へのポインター。 ファイルが圧縮されていない場合、この値は SourceFileSize と同じになります。 サイズは、ファイルを調べることによって決まります。INF ファイルから取得されません。 ターゲット ファイル サイズは、関数が NO_ERRORを返す場合にのみ有効です。

[in, out] CompressionType

この関数が ActualSourceFileName で使用される圧縮の種類を示す値を返す変数へのポインター。 圧縮の種類は、関数がNO_ERRORを返す場合にのみ有効です。 値には、次のいずれかのフラグを指定できます。

FILE_COMPRESSION_NONE

ソース ファイルは、認識された圧縮アルゴリズムを使用して圧縮されません。

FILE_COMPRESSION_WINLZA

ソース ファイルは LZ 圧縮で圧縮されます。

FILE_COMPRESSION_MSZIP

ソース ファイルは MSZIP 圧縮で圧縮されます。

戻り値

関数は、ファイル検索の結果を示す システム エラー コード を返します。 エラー コードには、次のいずれかの値を指定できます。

詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

SetupGetFileCompressionInfo を使用しないでください。代わりに常に SetupGetFileCompressionInfoEx を使用してください。

SetupGetFileCompressionInfo は物理ファイルを参照して圧縮を決定するため、セットアップ アプリケーションは SetupGetFileCompressionInfo を呼び出す前にファイルが存在することを確認する必要があります。

SetupAPI.dll のバージョンが 5.0.2195 未満の場合、呼び出し元は SetupAPI からエクスポートされた関数 MyFree を使用して、この関数によって割り当てられたメモリを解放し、 LocalFree を使用する必要があることに注意してください。 LocalFree を呼び出すとアクセス違反が発生した場合は、MyFree を使用して問題を解決する必要があります。

次に、SetupAPI.dll から MyFree 関数を取得する方法の例を示します。

typedef VOID (WINAPI* MYFREEFUNC)(LPVOID lpBuff);
   MYFREEFUNC MyFree;

   HMODULE hDll=NULL;
   hDll = GetModuleHandle("SETUPAPI.DLL");
   MyFree = (MYFREEFUNC)GetProcAddress(hDll, "MyFree");
   ...
   other code here to prepare file queue
   ...
   PTSTR lpActualSourceFileName;
   SetupGetFileCompressionInfo(...,&lpActualSourceFileName,...,...,...);
   ...
   MyFree(lpActualSourceFileName); 

注意

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

要件

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

関連項目

関数

概要

SetupDecompressOrCopyFile