IOCTL_MOUNTMGR_CHANGE_NOTIFY IOCTL (mountmgr.h)
每當掛接管理員的永續性符號連結名稱資料庫發生變更時,用戶端就會將此 IOCTL 傳送至掛接管理員。
掛接管理員會維護名為 EpicNumber 的計數器, 記錄自上次啟動後在其永續性名稱資料庫中發生的變更數目。 用戶端會使用每個變更通知要求 IRP 將號碼傳送給掛接管理員,而掛接管理員會以下列方式回應:
如果用戶端提供的數位不等於 EpicNumber,掛接管理員會傳回 STATUS_SUCCESS,表示用戶端上次將號碼與掛接管理員的 EpicNumber進行比較後發生變更。
如果用戶端所提供的數位等於 EpicNumber,則掛接管理員會將此程式解譯為要求,以通知永續性名稱資料庫的下一個變更,並將變更通知 IRP 排入佇列,並傳回STATUS_PENDING。 每當資料庫中發生變更時,掛接管理員就會完成所有擱置的變更通知 IRP,從而通知客戶端變更。
建議只通知特定磁碟區變更的用戶端,以註冊隨插即用目標裝置通知,並監看GUID_IO_VOLUME_NAME_CHANGE。
主要程序代碼
輸入緩衝區
掛接管理員用戶端會在 Irp->AssociatedIrp.SystemBuffer的緩衝區開頭初始化 MOUNTMGR_CHANGE_NOTIFY_INFO 結構。
輸入緩衝區長度
Parameters.DeviceIoControl.InputBufferLength 在 IRP 的 I/O 堆棧位置,表示輸入緩衝區的大小,以位元組為單位,其必須大於或等於 sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO)
。
輸出緩衝區
掛接管理員會在 Irp->AssociatedIrp.SystemBuffer的緩衝區開頭傳回目前 MOUNTMGR_CHANGE_NOTIFY_INFOEpicNumber。
輸出緩衝區長度
沒有。
輸入/輸出緩衝區
N/A
輸入/輸出緩衝區長度
N/A
狀態區塊
如果作業成功,狀態 欄位會設定為 [STATUS_SUCCESS],並將 [資訊] 字段設定為 [sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO)
]。
如果 InputBufferLength 小於 sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO)
或 OutputBufferLength 小於 sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO)
,Status 字段會設定為 STATUS_INVALID_PARAMETER。
言論
如需詳細資訊,請參閱 在記憶體類別驅動程式中支援掛接管理員要求。
要求
要求 | 價值 |
---|---|
標頭 | mountmgr.h (包括 Mountmgr.h) |