2016-08-29 4 views
0

Microsoft WDKのToasterサンプルコードにClassInstallerの例(tostrcls.dll)が含まれています。これは、デバイスマネージャが表示する「デバイスフレンドリ名」をカスタマイズする機能を示しています。能力は、デバイスのハードウェアキーのFriendlyNameの値を変更することによって達成されます。 FriendlyNameを変更すると、Device Managerウィンドウ(devmgmt.msc)のクローズと再オープンがそのような変更を反映します。ここまでは順調ですね。FriendlyNameレジストリ値を変更した後に、Windowsデバイスマネージャを更新するデバイスの名前を強制的に表示する方法

ただし、Device Managerウィンドウに変更を即時に反映するように指示するには(ウィンドウを閉じずに再度開く必要があります)、余分なコードを実行する必要があります。最適な

spDevInstall.FlagsEx |= DI_FLAGSEX_PROPCHANGE_PENDING; 

SetupDiSetDeviceInstallParams(Params->DeviceInfoSet, 
           Params->DeviceInfoData, 
           &spDevInstall); 
作品

が、ませclassInst.cは次のようになります。 DI_FLAGSEX_PROPCHANGE_PENDINGは、デバイスにSTOP/STARTサイクルを実行させます。つまり、ドライバのToasterEvtDeviceReleaseHardwareとToasterEvtDevicePrepareHardwareが実行されます。私はこれが望ましくない副作用だと思う。

私の質問は明らかです。ドライバコードを気にせずにデバイスマネージャの表示を更新する方法はありますか?

Toaster FriendlyName

答えて

0

私は(WindowsのCOMポート "ポート設定" タブを実装ClassInstallerある)WDK7 PnpPortsプロジェクトからの回答を得ました。

だけですべて完了

spDevInstall.Flags |= DI_PROPERTIES_CHANGE; 

spDevInstall.FlagsEx |= DI_FLAGSEX_PROPCHANGE_PENDING; 

を変更。

注:DI_FLAGSEX_PROPCHANGE_PENDINGのデバイス再起動動作は、WDK7のchmページ「DIF_ADDPROPERTYPAGE_ADVANCED」では記録されていますが、「SP_DEVINSTALL_PARAMS」では記録されていません。私は後者のみをチェックするので、それを逃した。

関連する問題