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結構。
輸入緩衝區長度
IRP I/O 堆疊位置中的 Parameters.DeviceIoControl.InputBufferLength 表示輸入緩衝區的大小,其大小必須大於或等於 sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO)
。
輸出緩衝區
掛接管理員會在 Irp-AssociatedIrp.SystemBuffer> 緩衝區開頭的 MOUNTMGR_CHANGE_NOTIFY_INFO 結構中傳回目前的 EpicNumber。
輸出緩衝區長度
無。
輸入/輸出緩衝區
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) |