UpdateResourceW 関数 (winbase.h)
ポータブル実行可能ファイル (PE) ファイル内のリソースを追加、削除、または置き換えます。 リソース構成 (RC 構成) データを含むファイルのリソース更新には、 言語に依存しない (LN) ファイルと言語固有のリソース (.mui) ファイルなど、いくつかの制限があります。
構文
BOOL UpdateResourceW(
[in] HANDLE hUpdate,
[in] LPCWSTR lpType,
[in] LPCWSTR lpName,
[in] WORD wLanguage,
[in, optional] LPVOID lpData,
[in] DWORD cb
);
パラメーター
[in] hUpdate
型: HANDLE
更新するファイルを参照する BeginUpdateResource 関数によって返されるモジュール ハンドル。
[in] lpType
種類: LPCTSTR
更新するリソースの種類。 または、ポインターではなく、このパラメーターに MAKEINTRESOURCE(ID) を指定できます。ここで、ID は定義済みのリソースの種類を表す整数値です。 文字列の最初の文字がシャープ記号 (#) の場合、残りの文字は、リソースの種類の整数識別子を指定する 10 進数を表します。 たとえば、文字列 "#258" は識別子 258 を表します。
定義済みのリソースの種類の一覧については、「 リソースの種類」を参照してください。
[in] lpName
種類: LPCTSTR
更新するリソースの名前。 または、ポインターではなく、このパラメーターに MAKEINTRESOURCE(ID) を指定できます。ここで、ID はリソース ID です。 新しいリソースを作成するときは、このパラメーターに '#' 文字で始まる文字列を使用しないでください。
[in] wLanguage
種類: WORD
更新するリソースの 言語識別子 。 言語識別子を構成する主言語識別子とサブ言語識別子の一覧については、 MAKELANGID マクロを参照してください。
[in, optional] lpData
種類: LPVOID
hUpdate によって示されるファイルに挿入されるリソース データ。 リソースが定義済みの種類の 1 つである場合、データは有効で適切に配置されている必要があります。 これは、LoadIcon、LoadString、またはその他のリソース固有の読み込み関数によって提供されるデータではなく、hUpdate によって示されるファイルに格納される生バイナリ データであることに注意してください。 文字列またはテキストを含むすべてのデータは、Unicode 形式である必要があります。 lpData は ANSI データを指してはなりません。
lpData が NULL で cbData が 0 の場合、指定されたリソースは hUpdate で示されるファイルから削除されます。
[in] cb
型: DWORD
lpData のリソース データのサイズ (バイト単位)。
戻り値
種類: BOOL
成功した場合は TRUE 、それ以外の場合 は FALSE を 返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
この関数を呼び出す前に、リソース ファイルを読み込まないことをお勧めします。 ただし、そのファイルが既に読み込まれている場合、エラーは返されません。
アプリケーションは UpdateResource を 繰り返し使用して、リソース データを変更できます。 UpdateResource の各呼び出しは、追加、削除、置換の内部リストに貢献しますが、実際には hUpdate で示されるファイルにデータを書き込むことはありません。 アプリケーションでは、 EndUpdateResource 関数を使用して、蓄積された変更をファイルに書き込む必要があります。
この関数は、コードとリソースの両方を含むモジュール内のリソースを更新できます。
Windows 7 より前:lpData が NULL で cbData が 0 以外の場合、指定されたリソースは削除されず、例外がスローされます。
Windows Vista 以降: 前述のように、RC 構成データを含むファイルのリソース更新には、LN ファイルと .mui ファイルという制限があります。 制限事項は次のとおりです。
アクション | LN ファイル | .mui ファイル |
---|---|---|
1. LN または .mui ファイルに存在しない新しい型を追加します。 | LN ファイルに型を追加し、言語に依存しない (ローカライズ不可) として扱い、RC 構成データに新しい型または項目を追加する | 使用できる唯一の追加は、ファイル バージョン、RC 構成データ、Side-by-side Assembly XML マニフェストの種類です。 |
2. 既存の種類に新しいリソース項目を追加します。 | RC 構成データを使用して、この LN ファイルに関連付けられている .mui ファイルに型が存在するかどうかをチェックします。 型が .mui ファイルに存在しない場合は、項目を追加し、新しい項目をローカライズ不可として扱います。 型が .mui ファイルに存在する場合、追加は許可されません。 | 追加できるのは、ファイル バージョン、RC 構成データ、Side-by-side Assembly XML Manifest の項目のみです。 |
3. リソース 項目を更新します。 | RC 構成データを使用して、LN ファイルに関連付けられている .mui ファイルに型が存在するかどうかをチェックします。 種類が .mui ファイルに存在しない場合、このリソース項目の更新は LN ファイルで許可されます。 それ以外の場合、この LN ファイルに関連付けられている .mui ファイルに型が存在する場合、この更新は許可されません。 | 許可される更新プログラムは、ファイル バージョン、RC 構成データ、Side-by-side Assembly XML Manifest の項目のみです。 |
4. 新しい言語の型/項目を追加します。 | 許可されていません。 | 許可されていません。 |
5. 既存の型/項目を削除します。 | ケース 3 と同様に動作します。 RC 構成データを使用して、LN ファイルに関連付けられている .mui ファイルに型が存在するかどうかをチェックします。 そうでない場合は、LN ファイルからのタイプ/明細の削除が許可されます。 それ以外の場合、この LN ファイルに関連付けられている .mui ファイルに型/項目が存在する場合、削除は許可されません。 | 削除できる型は、ファイル バージョン、RC 構成データ、Side-by-side Assembly XML Manifest のみです。また、これらの型の項目のみを削除できます。 |
6. RC 構成データに含まれていない型 (バージョン、Side-by-side Assembly XML Manifest、RC Config データ自体など) を追加/削除/更新します。 | 許可されます。 | 許可されます。 |
7. TYPELIB、reginst など、ローカライズできないデータのその他の更新。 | LN ファイルのタイプまたはアイテムを更新し、ローカライズ不可能として扱い、RC 構成データに新しいタイプまたは項目を追加します。 | 適用不可。 |
8. RC 構成データを追加します。 | 実行できますが、RC 構成データの整合性はチェックされません。 | 実行できますが、RC 構成データの整合性はチェックされません。 |
例
例については、「 リソースの更新」を参照してください。
注意
winbase.h ヘッダーは、UpdateResource をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | winbase.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |
関連項目
概念
その他のリソース
リファレンス