A Windowsのデバイスコインストーラ機能には、Microsoft WDK Toasterサンプルから、このようなものです:CoInstallerコードからデバイスが存在するかどうかを知る方法(存在する場合)
extern"C" __declspec(dllexport) DWORD CALLBACK
ToasterCoInstaller (
__in DI_FUNCTION InstallFunction,
__in HDEVINFO Dis,
__in PSP_DEVINFO_DATA Did,
__inout PCOINSTALLER_CONTEXT_DATA Context
)
{
...
}
は私がディスとDIDペアがのdevnodeを識別するために使用されていることを知っています。たとえデバイスがシステムから抜かれていても(例えばUSBディスクのプラグを抜いても)、デバイスマネージャにまだ存在しないデバイスを表示するよう指示することがあります。その場合、Co-installerは引き続きそのプラグが差し込まれたデバイスからDIS-そのdevnodeがレジストリに登録されているためです。
私の質問は明らかです。現在のDIS-DIDが現在のデバイスとは存在しないデバイスかどうかをToasterCoInstaller()からどのように判断するのですか?
を使用してすべてのDIGCF_PRESENT
devnodesを見つけて、Device-instance-idを照会するものと比較します。一致するものが見つからなければ、DIS-DIDが存在しないことを推測できます。
もっと簡潔な方法がありますか?いくつかの特定のSetupDi ...直接答えを伝えることができますか?