共用方式為


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。 如需詳細資訊,請參閱 映射主控 API

GUID_IO_CDROM_EXCLUSIVE_UNLOCK

a3b6d27d-5e35-4885-81e5-ee18c00ed779

針對獨佔存取鎖定的 CD-ROM 裝置已解除鎖定。

Windows Server 2003 和 Windows XP: 支援此值需要 IMAPI 2.0。 如需詳細資訊,請參閱 映射主控 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 的值表示媒體無法使用 (例如,因為作用中的錄製會話) 。

Windowsxp: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 的值表示媒體無法使用 (例如,因為作用中的錄製會話) 。

Windowsxp: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

磁片區已由另一個進程掛接。 您可以開啟一或多個控制碼。

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

檔案系統正在準備要退出的光碟。 例如,檔案系統正在停止背景格式設定作業,或在寫入一次媒體上關閉會話。

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

磁片區已由另一個進程解除鎖定。 您可以開啟一或多個控制碼。

GUID_IO_VOLUME_WEARING_OUT

873113ca-1486-4508-82ac-c3b2e5297aaa

媒體正在穿戴。當檔案系統判斷磁片區上的錯誤率太高,或其瑕疵取代空間幾乎耗盡時,就會傳送此事件。

Windows Server 2003 和 Windows XP: 不支援這個值。

備註

GUID_IO_VOLUME_DISMOUNTGUID_IO_VOLUME_DISMOUNT_FAILED事件是相關的,如同GUID_IO_VOLUME_LOCKGUID_IO_VOLUME_LOCK_FAILED事件。 GUID_IO_VOLUME_DISMOUNTGUID_IO_VOLUME_LOCK事件表示正在嘗試作業。 您應該對事件通知採取行動,並記錄所採取的動作。 GUID_IO_VOLUME_DISMOUNT_FAILEDGUID_IO_VOLUME_LOCK_FAILED事件指出嘗試的作業失敗。 接著,您可以使用記錄來復原您針對作業所做的動作。

DEV_BROADCAST_HANDLE 結構的dbch_hdevnotify成員表示受影響的裝置。 請注意,這是 RegisterDeviceNotification所傳回的裝置通知控制碼,而不是磁片區控制碼。 若要對磁片區執行作業,請將此控制碼對應至對應的磁片區控制碼。

規格需求

需求
最低支援的用戶端
Windows XP
最低支援的伺服器
Windows Server 2003
標頭
IoEvent.h