共同インストーラーのインターフェイス
Note
このセクションで説明する機能はサポートされておらず、それらを含むドライバー パッケージは Microsoft の署名を受けなくなります。 「ユニバーサル INF ファイルの使用」を参照してください。
共同インストーラーのインターフェイスは、エクスポートされたエントリ ポイント関数と関連するデータ構造体で構成されます。
共同インストーラー エントリ ポイント
共同インストーラーは、次のプロトタイプを持つエントリ ポイント関数をエクスポートする必要があります。
typedef DWORD
(CALLBACK* COINSTALLER_PROC) (
IN DI_FUNCTION InstallFunction,
IN HDEVINFO DeviceInfoSet,
IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL,
IN OUT PCOINSTALLER_CONTEXT_DATA Context
);
InstallFunction
共同インストーラーが参加するオプションを持つ、処理中のデバイス インストール要求を指定します。 これらの要求は、DIF_INSTALLDEVICE などの DIF コードを使用して指定されます。 詳細については、「デバイス インストール関数コード」を参照してください。
DeviceInfoSet
デバイスの情報セットへのハンドルを提供します。
DeviceInfoData
オプションで、デバイス インストール要求のターゲットであるデバイスを識別します。 このパラメーターが NULL 以外の場合は、デバイス情報セット内のデバイス情報要素を識別します。 SetupDiCallClassInstaller がデバイス固有の共同インストーラーを呼び出す場合、DeviceInfoData は NULL 以外です。 クラス固有の共同インストーラーは、DIF_DETECT や DIF_FIRSTTIMESETUP など、NULL の DeviceInfoData を持つ DIF 要求で呼び出すことができます。
Context
COINSTALLER_CONTEXT_DATA 構造体を指します。
デバイス共同インストーラーは、次のいずれかの値を返します。
NO_ERROR
共同インストーラーは、指定された InstallFunction に対して適切なアクションを実行したか、共同インストーラーは、要求に対してアクションを実行する必要はないと判断しました。
共同インストーラーは、認識できない DIF コードを受け取った場合も、NO_ERROR を返す必要があります。 (認識できない DIF コードについては、クラス インストーラーが ERROR_DI_DO_DEFAULT を返すことに注意してください)。
ERROR_DI_POSTPROCESSING_REQUIRED
共同インストーラーは、指定された InstallFunction に対して適切なアクションを実行し、クラス インストーラーが要求を処理した後に再び呼び出されることを要求しています。
Win32 エラー
共同インストーラーでエラーが発生しました。
共同インストーラーは、ERROR_DI_DO_DEFAULT の戻り値の状態を設定しません。 この状態は、クラス インストーラーのみが使用できます。 共同インストーラーがこの状態を返した場合、 SetupDiCallClassInstaller は DIF_Xxx 要求を正しく処理しません。 共同インストーラーは、後処理パスで ERROR_DI_DO_DEFAULT の戻り値の状態を伝達する可能性がありますが、この値を設定することはありません。
COINSTALLER_CONTEXT_DATA
COINSTALLER_CONTEXT_DATA は、インストール要求を記述する共同インストーラー固有のコンテキスト構造体です。 構造体の形式は次のとおりです。
typedef struct
_COINSTALLER_CONTEXT_DATA {
BOOLEAN PostProcessing;
DWORD InstallResult;
PVOID PrivateData;
} COINSTALLER_CONTEXT_DATA, *PCOINSTALLER_CONTEXT_DATA;
次の一覧では、この構造体のメンバーについて説明します。
PostProcessing は、適切なクラス インストーラー (存在する場合) の後に共同インストーラーが呼び出され、InstallFunction によって指定された DIF コードを処理した場合、TRUE になります。 PostProcessing は、共同インストーラーに対して読み取り専用です。
PostProcessing が FALSE の場合、InstallResult は関連しません。 PostProcessing が TRUE の場合、InstallResult はインストール要求の現在の状態です。 この値は NO_ERROR か、このインストール要求に対して呼び出された前のコンポーネントによって返されたエラー状態です。 共同インストーラーは、関数の戻り値に対してこの値を返すことによって状態を伝達するか、別の状態を返すことができます。 InstallResult は、共同インストーラーに対して読み取り専用です。
PrivateData は、共同インストーラーによって割り当てられたバッファーを指します。 共同インストーラーがこのポインターを設定し、後処理を要求する場合、 SetupDiCallClassInstaller は、後処理のために共同インストーラーを呼び出すときに、共同インストーラーへのポインターを渡します。