次の方法で共有


デバイス イベントの種類

WM_DEVICECHANGE メッセージの処理中にデバイス イベントの種類を確認するには、wParam パラメーターを調べます。 wParam の値によって、lParam パラメーター内のイベント固有のデータの意味が決まります。 一般に、イベント固有のデータはデバイスを識別し、イベントに関する追加の詳細を提供します。 このデータの形式はデバイスの種類によって異なりますが、最初の数バイトは常に DEV_BROADCAST_HDR 構造体と同じ形式になります。 データの形式を確認するには、dbch_devicetype メンバーを確認します。

システムは、デバイスが挿入され、使用できるようになるたびに、DBT_DEVICEARRIVAL 型のデバイス イベント (つまり、wParam が DBT_DEVICEARRIVAL に設定された WM_DEVICECHANGE メッセージ) をブロードキャストします。 通常、アプリケーションはデバイスの種類を確認し、必要に応じてすぐにデバイスの使用を開始します。

システムは、DBT_DEVICEQUERYREMOVE デバイス イベントをブロードキャストして、デバイスを削除するアクセス許可を要求します。 デバイスが必要かどうかを判断するために、アプリケーションはダイアログ ボックスを表示して、ユーザーに指示を求めることができます。 アプリケーションでデバイスが必要であると判断された場合は、この要求を拒否し、BROADCAST_QUERY_DENYを返すことによって削除を取り消すことができます。 アプリケーションがデバイスを必要としない場合は、TRUE 返す必要があります。 アプリケーションまたはドライバーがデバイスを削除する前の要求をキャンセルした場合、システムは直ちに DBT_DEVICEQUERYREMOVEFAILED メッセージを送信します。

システムは、デバイスが削除される前に、DBT_DEVICEREMOVEPENDING デバイス イベントを最後の警告としてブロードキャストします。 この時点で、アプリケーションは削除を取り消すことができないので、デバイスを使用している場合は、データの損失を防ぐために削除の準備をする必要があります。 これは、ネットワーク接続を削除する場合に特に重要です。 アプリケーションは、開いているファイルまたはパイプのいずれかがその接続上にあるかどうかを判断する必要があります。 これを行うには、メッセージのイベント固有データ内のネットワーク リソース識別子と、以前にファイルとパイプ用に取得したリソース識別子を比較します。 システムは、デバイスが削除され、使用できなくなったときに、DBT_DEVICEREMOVECOMPLETE デバイス イベントをブロードキャストします。

システムは、DBT_QUERYCHANGECONFIG デバイス イベントをブロードキャストして、現在の構成を変更するアクセス許可を要求します (ドッキングまたはドッキング解除)。 どのアプリケーションでもBROADCAST_QUERY_DENYを返して要求を拒否し、変更を取り消すことができます。 アプリケーションが要求を拒否した場合、システムは DBT_CONFIGCHANGECANCELED メッセージを送信します。 ドッキングまたはドッキング解除のために現在の構成が変更された場合、システムは DBT_CONFIGCHANGED メッセージを送信します。

システムは、デバイス固有のイベントが発生するたびに、DBT_DEVICETYPESPECIFIC デバイス イベントをブロードキャストします。

ドライバーは、独自のカスタム イベントの種類を作成できます。 カスタム イベントは、特定のデバイス上のデバイス イベント通知に登録されているアプリケーションにのみ送信され、カーネル モード ドライバーによってのみ開始できます。 詳細については、DBT_CUSTOMEVENTを参照してください。