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 を返します。
出力バッファーの長さ
[なし] :
入力/出力バッファー
該当なし
入力/出力バッファーの長さ
該当なし
ステータス ブロック
操作が成功した場合、[ 状態] フィールドは STATUS_SUCCESS に設定され、[ 情報 ] フィールドは に sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO)
設定されます。
InputBufferLength が よりsizeof(MOUNTMGR_CHANGE_NOTIFY_INFO)
小さいか、OutputBufferLength が よりsizeof(MOUNTMGR_CHANGE_NOTIFY_INFO)
小さい場合、Status フィールドはSTATUS_INVALID_PARAMETERに設定されます。
注釈
詳細については、「 記憶域クラス ドライバーでのマウント マネージャー要求のサポート」を参照してください。
要件
要件 | 値 |
---|---|
Header | mountmgr.h (Mountmgr.h を含む) |