RegisterDeviceNotificationA 関数 (winuser.h)
ウィンドウが通知を受信するデバイスまたはデバイスの種類を登録します。
手記
コードが Windows 8 以降のバージョンの Windows を対象 場合は、RegisterDeviceNotification の代わりに CM_Register_Notification を使用できます。 CM_Register_Notification の利点は、ウィンドウ ハンドルが機能する必要がないということです。
構文
HDEVNOTIFY RegisterDeviceNotificationA(
[in] HANDLE hRecipient,
[in] LPVOID NotificationFilter,
[in] DWORD Flags
);
パラメーター
[in] hRecipient
NotificationFilter パラメーターで指定されたデバイスのデバイス イベントを受信するウィンドウまたはサービスへのハンドル。 同じウィンドウ ハンドルは、RegisterDeviceNotificationを
サービスは、ウィンドウ ハンドルまたはサービス状態ハンドルを指定できます。
[in] NotificationFilter
通知を送信するデバイスの種類を指定するデータ ブロックへのポインター。 このブロックは常に DEV_BROADCAST_HDR 構造体で始まります。 このヘッダーの後のデータは、DBT_DEVTYP_DEVICEINTERFACE または DBT_DEVTYP_HANDLEできる dbch_devicetype メンバーの値に依存します。 詳細については、「解説」を参照してください。
[in] Flags
このパラメーターには、次のいずれかの値を指定できます。
価値 | 意味 |
---|---|
|
hRecipient パラメーターはウィンドウ ハンドルです。 |
|
hRecipient パラメーターは、サービス状態ハンドルです。 |
さらに、次の値を指定できます。
戻り値
関数が成功した場合、戻り値はデバイス通知ハンドルです。
関数が失敗した場合、戻り値は NULL
備考
アプリケーションは、BroadcastSystemMessage 関数を使用してイベント通知を送信します。 最上位レベルのウィンドウを持つアプリケーションは、WM_DEVICECHANGE メッセージを処理することで基本的な通知を受け取ることができます。 アプリケーションでは、RegisterDeviceNotification 関数を使用して、デバイス通知を受信するために登録できます。
サービスは、RegisterDeviceNotification 関数を使用して、デバイス通知を受信するために登録できます。 サービスが hRecipient パラメーターでウィンドウ ハンドルを指定した場合、通知はウィンドウ プロシージャに送信されます。 hRecipient
プラグ アンド プレイ デバイス イベントは、できるだけ早く処理してください。 そうしないと、システムが応答しなくなる可能性があります。 イベント ハンドラーが実行をブロックする可能性がある操作 (I/O など) を実行する場合は、別のスレッドを開始して操作を非同期的に実行することをお勧めします。
RegisterDeviceNotification によって返されるデバイス通知ハンドルは、必要なくなったときに UnregisterDeviceNotification 関数を呼び出すことによって閉じる必要があります。
DBT_DEVICEARRIVAL イベントと DBT_DEVICEREMOVECOMPLETE イベントは、ポート デバイスのすべての最上位ウィンドウに自動的にブロードキャストされます。 そのため、ポートの RegisterDeviceNotification
例
例については、「デバイス通知の登録」を参照してください。
手記
winuser.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして RegisterDeviceNotification を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP |
サポートされる最小サーバー | Windows Server 2003 |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | winuser.h (Windows.h を含む) |
ライブラリ | User32.lib |
DLL | User32.dll |
API セットの | ext-ms-win-ntuser-misc-l1-1-0 (Windows 8 で導入) |
関連項目
デバイス通知 の
RegisterDeviceNotification の
UnregisterDeviceNotification の