裝置事件類型

若要判斷處理 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