Share via


SetupCopyOEMInfW 関数 (setupapi.h)

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

SetupCopyOEMInf 関数は、指定した .inf ファイルを %windir%/Inf ディレクトリにコピーします。

この関数の呼び出し元には管理特権が必要です。それ以外の場合、関数は失敗します。

構文

WINSETUPAPI BOOL SetupCopyOEMInfW(
  [in]            PCWSTR SourceInfFileName,
  [in]            PCWSTR OEMSourceMediaLocation,
  [in]            DWORD  OEMSourceMediaType,
  [in]            DWORD  CopyStyle,
  [out, optional] PWSTR  DestinationInfFileName,
  [in]            DWORD  DestinationInfFileNameSize,
  [out, optional] PDWORD RequiredSize,
  [out, optional] PWSTR  *DestinationInfFileNameComponent
);

パラメーター

[in] SourceInfFileName

ソース .inf ファイルへの完全パス。 null で終わる文字列を使用する必要があります。 このパスは、終端の NULL を含め、サイズがMAX_PATHを超えないようにする必要があります。

[in] OEMSourceMediaLocation

プリコンパイル済みの .inf (.pnf) に格納されるソースの場所情報。 この場所の情報は、指定されたソース メディアの種類に固有です。 null で終わる文字列を使用する必要があります。 このパスは、終端の NULL を含め、サイズがMAX_PATHを超えないようにする必要があります。

[in] OEMSourceMediaType

場所情報によって参照されるソース メディアの種類。 このパラメーターには、次のいずれかの値を指定できます。

意味
SPOST_NONE
ソース メディア情報は .pnf ファイルに格納されません。 この場合、 OEMSourceMediaLocation の値は無視されます。
SPOST_PATH
OEMSourceMediaLocation には、ソース メディアへのパスが含まれています。 たとえば、メディアがフロッピー上にある場合、このパスは "A:\" になります。 OEMSourceMediaLocationNULL の場合、パスは .inf が配置されているパスであると見なされます。 .inf の対応する .pnf がその場所にある場合、.pnf ファイルのソース メディア情報が転送先の .pnf ファイルに転送されます。
SPOST_URL
OEMSourceMediaLocation には、.inf/driver ファイルが取得されたインターネットの場所を指定するユニバーサル リソース ロケーター (URL) が含まれています。 OEMSourceMediaLocationNULL の場合、既定の Code Download Manager の場所が使用されたと見なされます。

[in] CopyStyle

.inf ファイルを .inf ディレクトリにコピーする方法を指定します。 次のフラグを組み合わせることができます。

意味
SP_COPY_DELETESOURCE
コピーが正常に完了したら、ソース ファイルを削除します。
SP_COPY_REPLACEONLY
このファイルが Inf ディレクトリに既に存在する場合にのみコピーします。 このフラグを使用して、既存の .inf のソースの場所情報を更新できます。
SP_COPY_NOOVERWRITE
指定したファイルが Inf ディレクトリに現在存在しない場合にのみコピーします。 .inf が現在存在する場合、この API は失敗し、 GetLastError は ERROR_FILE_EXISTSを返します。 この場合、既存の .inf ファイルのファイル名は、コピー先の .inf ファイルの情報出力バッファーの適切なフィールドに配置されます。
SP_COPY_OEMINF_CATALOG_ONLY
指定した .inf ファイルの対応するカタログ ファイルが %windir%\Inf にコピーされます。 このフラグを指定した場合、指定した .inf ファイルが Inf ディレクトリに既に存在する場合、正常に戻ると宛先ファイル名情報が入力されます。

[out, optional] DestinationInfFileName

Inf ディレクトリにコピーされた時点で割り当てられた .inf ファイル名を受け取るバッファーへのポインター。 バッファーを指定する場合は、通常、 長さがMAX_PATH する必要があります。 SP_COPY_NOOVERWRITE フラグを指定し、 SetupCopyOEMInf 関数がERROR_FILE_EXISTSのリターン コードで失敗した場合、このバッファーには既存の .inf ファイルの名前が含まれます。 SP_COPY_OEMINF_CATALOG_ONLY フラグが指定されている場合、.inf ファイルが Inf ディレクトリに既に存在する場合、このバッファーには宛先の .inf ファイル名が含まれます。 それ以外の場合、このバッファーは空の文字列に設定されます。 このパラメーターは、NULL でもかまいません。

[in] DestinationInfFileNameSize

DestinationInfFileName バッファーのサイズ (文字数)、またはバッファーが指定されていない場合は 0。 DestinationInfFileName を指定し、このバッファー サイズが宛先の .inf ファイル名 (完全なパスを含む) を返すために必要なサイズより小さい場合、この関数は失敗します。 この場合 、GetLastError は ERROR_INSUFFICIENT_BUFFERを返します。

[out, optional] RequiredSize

終端 の NULL を含む宛先の .inf ファイル名を格納するために必要なサイズ (文字数) を受け取る変数へのポインター。 SP_COPY_OEMINF_CATALOG_ONLY フラグが指定されている場合、この変数は、.inf ファイルが Inf ディレクトリに既に存在する場合にのみ、文字列の長さを受け取ります。 それ以外の場合、この変数は 0 に設定されます。 このパラメーターは、NULL でもかまいません。

[out, optional] DestinationInfFileNameComponent

DestinationInfFileName パラメーターに格納されているパスのファイル名コンポーネントの先頭を指すように、正常に戻るときに設定された文字列 (またはERROR_FILE_EXISTS) へのポインター。 SP_COPY_OEMINF_CATALOG_ONLY フラグを指定した場合、 DestinationInfFileName パラメーターは空の文字列である可能性があります。 この場合、文字ポインターは、正常に戻ると NULL に設定されます。 このパラメーターは、NULL でもかまいません。

戻り値

この関数は WINSETUPAPI BOOL を返します。

注釈

SetupCopyOEMInf 関数は、指定した .inf ファイルを %windir%\Inf ディレクトリにコピーします。 SetupCopyOEMInf は、指定した .inf ファイルのバイナリ イメージが同じ名前またはフォーム OEM*.inf の名前を持つ Inf ディレクトリに既に存在する場合、ファイルを再コピーしません。 SetupCopyOEMInf がファイルをコピーすると、コピーしたファイルの名前が OEM*.inf に変更されます。 指定された名前は一意であり、予測できません。

SetupCopyOEMInf では、次の手順を使用して、.inf ファイルが Inf ディレクトリに既に存在するかどうかを判断します。

OEM*.inf 形式の名前を持つすべての .inf ファイルが列挙され、指定した .inf ファイルと同じファイル サイズのファイルはすべてバイナリ比較されます。

Inf ディレクトリは、.inf ファイルのソース ファイル名を検索します。 同じ名前の .inf ファイルが存在し、指定した .inf ファイルと同じサイズの場合、2 つのファイルはバイナリと比較して同じかどうかを判断します。

指定した .inf ファイルが既に存在する場合は、さらにチェックが実行され、指定した .inf ファイルの [Version] セクションに CatalogFile= エントリが含まれているかどうかを判断します。 その場合は、.inf ファイルの %windir%\Inf プライマリ ファイル名と拡張子 ".cat" が使用され、カタログが既にインストールされているかどうかを判断します。 カタログがインストールされているが、ソース .inf に関連付けられているカタログと同じでない場合、これは一致とは見なされず、列挙が続行されます。 %windir%\Inf ディレクトリに含まれる一意のカタログを持つ複数の同一の .inf ファイルを持つことができます。 既存の一致が見つからない場合は、.inf ファイルと .cat ファイルが新しい一意の名前でインストールされます。

CatalogFile= エントリを指定しない OEM .inf ファイルは、デジタル署名の検証に関して無効と見なされます。

.inf ファイルを %windir%\Inf ディレクトリにコピーする必要がある場合は、デジタル署名検証エラーが報告されます。

.inf ファイルと .cat ファイルが既に存在する場合は、これらの既存のファイル名が使用され、ファイルの置換動作は指定された CopyStyle フラグに基づいています。 置換動作は、.pnf に格納されているソース メディア情報のみを参照します。 既存の .inf、.pnf、.cat ファイルは変更されません。

注意

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

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー setupapi.h
Library Setupapi.lib
[DLL] Setupapi.dll
API セット ext-ms-win-setupapi-classinstallers-l1-1-2 (Windows 10 バージョン 10.0.14393 で導入)

関連項目

関数

概要

SetupUninstallOEMInf