次の方法で共有


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 を返します。

出力バッファーの長さ

[なし] :

入力/出力バッファー

該当なし

入力/出力バッファーの長さ

該当なし

ステータス ブロック

操作が成功した場合、[ 状態] フィールドは 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 を含む)

こちらもご覧ください

MOUNTMGR_CHANGE_NOTIFY_INFO