Microsoft DirectX 8.0 (Visual Basic) |
アプリケーションで定義されたコールバック関数 DirectXSetupCallbackFunction が DirectXSetup 関数で呼び出されると、コールバック関数に呼び出し理由を示すパラメータが渡される。理由が DSETUP_CB_MSG_CHECK_DRIVER_UPGRADE の場合、pInfo パラメータは、DirextXSetup 関数が推奨する Microsoft® DirectX® コンポーネントおよびドライバのアップグレード方法をまとめたフラグを保持する DSETUP_CB_UPGRADEINFO 構造体を示す。これらのフラグを格納する構造体メンバは、UpgradeFlags と呼ばれる。
UpgradeFlags には次のようなカテゴリがある。
DSETUP_CB_UPGRADE_FORCE
DSETUP_CB_UPGRADE_KEEP
DSETUP_CB_UPGRADE_SAFE
DSETUP_CB_UPGRADE_UNKNOWN
DSETUP_CB_UPGRADE_CANTBACKUP
DSETUP_CB_UPGRADE_HASWARNINGS
DSETUP_CB_UPGRADE_DEVICE_ACTIVE
DSETUP_CB_UPGRADE_DISPLAY
DSETUP_CB_UPGRADE_MEDIA
つまり、Reason パラメータの値が DSETUP_CB_MSG_CHECK_DRIVER_UPGRADE であれば、pInfo で指定される構造体メンバ UpgradeFlags には、常に 1 つの一次アップグレード フラグ、0 個以上の二次アップグレード フラグ、0 個または 1 つのデバイス アクティブ フラグ、および 1 つのデバイス クラス フラグが含まれる。
UpgradeFlags のメンバに DSETUP_CB_UPGRADE_KEEP が設定されている場合は、Windows® が正常に機能しなくなる恐れがあるため、DirectX コンポーネントやデバイス ドライバをアップグレードすることはできない。DirectXSetup 関数によるコンポーネントまたはドライバのアップグレードは行われない。
UpgradeFlags に DSETUP_CB_UPGRADE_FORCE という値がある場合は、Windows を正常に機能させるため、コンポーネントまたはドライバのアップグレードが必要である。このため、DirectXSetup 関数は、ドライバまたはコンポーネントのアップグレードを行う。ただし、アップグレードによって、システム上の一部のプログラムに悪影響が及ぶ可能性がある。DirectXSetup 関数がこの状態を検出すると、UpgradeFlags のメンバは (DSETUP_CB_UPGRADE_FORCE | DSETUP_CB_UPGRADE_HAS_WARNINGS) に設定される。この場合、DirectXSetup 関数は、アップグレードを実行する一方で、ユーザーに警告を発する。
コンポーネントおよびドライバをインストールしても Windows の動作に悪影響が及ばない場合、そのコンポーネントやドライバは安全にアップグレードできると見なされる。この場合、UpgradeFlags のメンバには DSETUP_CB_UPGRADE_SAFE が設定される。ただし、Windows に対しては安全であっても、システムにインストールされているプログラムに問題が発生する可能性はある。DirectXSetup 関数がこの状態を検出すると、UpgradeFlags のメンバには、値 (DSETUP_CB_UPGRADE_SAFE | DSETUP_CB_UPGRADE_HAS_WARNINGS) が格納される。この場合、DirectXSetup 関数のデフォルト動作では、アップグレードは実行されない。