IoEvent.h) (裝置事件
包括服務的應用程式可以註冊以接收裝置事件的通知。 例如,目錄服務可以收到已掛接或卸載的磁片區通知,以便調整磁片區上檔案的路徑。 系統會將 WM_DEVICECHANGE訊息傳送 給應用程式,通知應用程式發生裝置事件。 系統會通知服務,叫用服務的事件處理常式函式 HandlerEx時,裝置事件已發生。
若要接收裝置事件通知,請使用DEV_BROADCAST_HANDLE結構呼叫RegisterDeviceNotification函式。 請務必將 dbch_handle 成員設定為從 CreateFile 函式取得的裝置控制碼。 此外,將 dbch_devicetype 成員設定為 DBT_DEVTYP_HANDLE。 函式會傳回裝置通知控制碼。 請注意,這與磁片區控制碼不同。
當應用程式收到通知時,如果事件種類 DBT_CUSTOMEVENT,您可能已收到 IoEvent.h 中定義的其中一個裝置事件。 若要判斷是否已發生其中一個事件,請使用下列步驟。
- 將事件資料視為 DEV_BROADCAST_HDR 結構。 確認 dbch_devicetype 成員已設定為 DBT_DEVTYP_HANDLE。
- 如果dbch_devicetype DBT_DEVTYP_HANDLE,事件資料實際上是DEV_BROADCAST_HANDLE結構的指標。
- 使用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_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 |
標頭 |
|