共用方式為


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_MJ_DEVICE_CONTROL

輸入緩衝區

掛接管理員用戶端會在 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)

另請參閱

MOUNTMGR_CHANGE_NOTIFY_INFO