次の方法で共有


デバイス イベント (IoEvent.h)

サービスを含むアプリケーションは、デバイス イベントの通知を受け取るために登録できます。 たとえば、カタログ サービスは、ボリューム上のファイルへのパスを調整できるように、マウントまたはマウント解除されているボリュームの通知を受け取ることができます。 システムは、アプリケーションに WM_DEVICECHANGE メッセージを送信することによって、デバイス イベントが発生したことをアプリケーションに通知します。 システムは、サービスのイベント ハンドラー関数 HandlerEx を呼び出すことによって、デバイス イベントが発生したことをサービスに通知します。

デバイス イベント通知を受信するには、DEV_BROADCAST_HANDLE構造体を使用して RegisterDeviceNotification 関数を呼び出します。 Dbch_handle メンバーは、CreateFile 関数から取得したデバイス ハンドルに設定してください。 また、 dbch_devicetype メンバーを DBT_DEVTYP_HANDLE に設定 します。 関数は、デバイス通知ハンドルを返します。 これはボリューム ハンドルと同じではないことに注意してください。

アプリケーションが通知を受信したときに、イベントの種類が DBT_CUSTOMEVENTされている場合は、IoEvent.h で定義されているデバイス イベントのいずれかを受信している可能性があります。 これらのイベントのいずれかが発生したかどうかを確認するには、次の手順を使用します。

  1. イベント データを DEV_BROADCAST_HDR 構造として扱います。 dbch_devicetype メンバーが DBT_DEVTYP_HANDLE に設定されていることを確認 します
  2. dbch_devicetypeがDBT_DEVTYP_HANDLE場合、イベント データは実際にはDEV_BROADCAST_HANDLE構造体へのポインターです。
  3. IsEqualGUID 関数を使用して、dbch_eventguid メンバーを次の表に示す GUIDと比較します。

GUID_IO_CDROM_EXCLUSIVE_LOCK

bc56c139-7a10-47ee-a294-4c6a38f0149a

CD-ROM デバイスは排他アクセス用にロックされています。

Windows Server 2003 および Windows XP: この値をサポートするには、IMAPI 2.0 が必要です。 詳細については、「 Image Mastering API」を参照してください。

GUID_IO_CDROM_EXCLUSIVE_UNLOCK

a3b6d27d-5e35-4885-81e5-ee18c00ed779

排他アクセス用にロックされた CD-ROM デバイスのロックが解除されました。

Windows Server 2003 および Windows XP: この値をサポートするには、IMAPI 2.0 が必要です。 詳細については、「 Image Mastering API」を参照してください。

GUID_IO_DEVICE_BECOMING_READY

d07433f0-a98e-11d2-917a-00a0c9068ff3

メディアのスピンアップが進行中です。

GUID_IO_DEVICE_EXTERNAL_REQUEST

d07433d0-a98e-11d2-917a-00a0c9068ff3

このイベントには、いくつかの原因が考えられます。詳細については、GET EVENT STATUS NOTIFICATION コマンドの T10 MMC 仕様を参照してください。

GUID_IO_MEDIA_ARRIVAL

d07433c0-a98e-11d2-917a-00a0c9068ff3

リムーバブル メディアがデバイスに追加されました。 dbch_data メンバーは、CLASS_MEDIA_CHANGE_CONTEXT構造体へのポインターです。 NewState メンバーは、状態情報を提供します。 たとえば、 MediaUnavailable の値は、メディアが使用できない (たとえば、アクティブな記録セッションが原因) ことを示します。

Windows XP:dbch_data メンバーは、システムの起動以降にメディアが変更された回数を表す ULONG 値です。

GUID_IO_MEDIA_EJECT_REQUEST

d07433d1-a98e-11d2-917a-00a0c9068ff3

リムーバブル メディアのドライブが、指定したスロットまたはメディアを取り出す要求をユーザーから受信しました。

GUID_IO_MEDIA_REMOVAL

d07433c1-a98e-11d2-917a-00a0c9068ff3

リムーバブル メディアがデバイスから削除されたか、使用できません。 dbch_data メンバーは、CLASS_MEDIA_CHANGE_CONTEXT構造体へのポインターです。 NewState メンバーは、状態情報を提供します。 たとえば、 MediaUnavailable の値は、メディアが使用できない (たとえば、アクティブな記録セッションが原因) ことを示します。

Windows XP:dbch_data メンバーは、システムの起動以降にメディアが変更された回数を表す ULONG 値です。

GUID_IO_VOLUME_CHANGE

7373654a-812a-11d0-bec7-08002be2092f

ボリューム ラベルが変更されました。

GUID_IO_VOLUME_CHANGE_SIZE

3a1625be-ad03-49f1-8ef8-6bbac182d1fd

ボリューム上のファイル システムのサイズが変更されました。

Windows Server 2003 および Windows XP: この値はサポートされていません。

GUID_IO_VOLUME_DISMOUNT

d16a55e8-1059-11d2-8ffd-00a0c9a06d32

ボリュームのマウント解除が進行中です。 ボリューム上のファイルとディレクトリに対するすべてのハンドルを閉じる必要があります。 このイベントの前に 必ずしもGUID_IO_VOLUME_LOCK イベントが発生するとは限りません。

GUID_IO_VOLUME_DISMOUNT_FAILED

e3c5b178-105d-11d2-8ffd-00a0c9a06d32

ボリュームのマウントを解除できませんでした。 これは多くの場合、未処理のハンドルを閉じて 、別 のプロセスがGUID_IO_VOLUME_DISMOUNT通知に応答できなかったために発生します。 マウント解除に失敗したため、影響を受けるボリュームへのハンドルを再度開く場合があります。

GUID_IO_VOLUME_FVE_STATUS_CHANGE

062998b2-ee1f-4b6a-b857-e76cbbe9a6da

ボリュームの BitLocker ドライブ暗号化の状態が変更されました。 このイベントは、BitLocker が有効または無効になっている場合、または暗号化の開始、終了、一時停止、または再開時に通知されます。

Windows Server 2003 および Windows XP: この値はサポートされていません。

GUID_IO_VOLUME_LOCK

50708874-c9af-11d1-8fef-00a0c9a06d32

別のプロセスでは、ボリュームをロックしようとしています。 ボリューム上のファイルとディレクトリに対するすべてのハンドルを閉じる必要があります。

GUID_IO_VOLUME_LOCK_FAILED

ae2eed10-0ba8-11d2-8ffb-00a0c9a06d32

ボリュームをロックできませんでした。 これは多くの場合、未処理のハンドルを閉じて別のプロセス がGUID_IO_VOLUME_LOCK イベントに応答できなかったことが原因で発生します。 ロックが失敗したため、影響を受けるボリュームへのハンドルを再度開く場合があります。

GUID_IO_VOLUME_MOUNT

b5804878-1a96-11d2-8ffd-00a0c9a06d32

ボリュームは別のプロセスによってマウントされています。 1 つ以上のハンドルを開く場合があります。

GUID_IO_VOLUME_NAME_CHANGE

2de97f83-4c06-11d2-a532-00609713055a

ボリューム名が変更されました。

GUID_IO_VOLUME_NEED_CHKDSK

799a0960-0a0b-4e03-ad88-2fa7c6ce748a

ボリュームの破損がファイル システムによって検出されました。 アプリケーションは、ボリュームで CHKDSK を実行するか、ユーザーに通知する必要があります。

Windows Server 2003 および Windows XP: この値はサポートされていません。

GUID_IO_VOLUME_PHYSICAL_CONFIGURATION_CHANGE

2de97f84-4c06-11d2-a532-00609713055a

ボリュームの物理的なメークアップまたは現在の物理的な状態が変更されました。

GUID_IO_VOLUME_PREPARING_EJECT

c79eb16e-0dac-4e7a-a86c-b25ceeaa88f6

ファイル システムは、取り出すディスクを準備しています。 たとえば、ファイル システムがバックグラウンドの書式設定操作を停止したり、書き込み 1 回のメディアでセッションを閉じたりしています。

Windows Server 2003 および Windows XP: この値はサポートされていません。

GUID_IO_VOLUME_UNIQUE_ID_CHANGE

af39da42-6622-41f5-970b-139d092fa3d9

ボリュームの一意識別子が変更されました。 一意識別子の詳細については、「 IOCTL_MOUNTDEV_QUERY_UNIQUE_ID」を参照してください。

Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: この値は、Windows Server 2008 R2 と Windows 7 まではサポートされません。

GUID_IO_VOLUME_UNLOCK

9a8c3d68-d0cb-11d1-8fef-00a0c9a06d32

ボリュームは別のプロセスによってロック解除されています。 1 つ以上のハンドルを開く場合があります。

GUID_IO_VOLUME_WEARING_OUT

873113ca-1486-4508-82ac-c3b2e5297aaa

メディアが摩耗しています。このイベントは、ファイル システムがボリュームのエラー率が高すぎるか、欠陥交換領域がほとんど使い果たされていると判断した場合に送信されます。

Windows Server 2003 および Windows XP: この値はサポートされていません。

注釈

GUID_IO_VOLUME_DISMOUNTイベントとGUID_IO_VOLUME_DISMOUNT_FAILEDイベントは、GUID_IO_VOLUME_LOCKイベントとGUID_IO_VOLUME_LOCK_FAILEDイベントと同様に関連しています。 GUID_IO_VOLUME_DISMOUNTイベントとGUID_IO_VOLUME_LOCK イベントは、操作が試行されていることを示します。 イベント通知に基づいて操作し、実行されたアクションを記録する必要があります。 GUID_IO_VOLUME_DISMOUNT_FAILEDイベントとGUID_IO_VOLUME_LOCK_FAILED イベントは、試行された操作が失敗したことを示します。 その後、レコードを使用して、操作に応答して行った操作を元に戻すことができます。

DEV_BROADCAST_HANDLE構造体のdbch_hdevnotify メンバーは、影響を受けるデバイスを示します。 これは、ボリューム ハンドルではなく、 RegisterDeviceNotification によって返されるデバイス通知ハンドルであることに注意してください。 ボリュームに対して操作を実行するには、このハンドルを対応するボリューム ハンドルにマップします。

必要条件

要件
サポートされている最小のクライアント
Windows XP
サポートされている最小のサーバー
Windows Server 2003
Header
IoEvent.h