IRP_MJ_SET_QUOTA (FS およびフィルター ドライバー)

送信時

I/O マネージャーは IRP_MJ_SET_QUOTA リクエストを送信します。 たとえば、ユーザーモード アプリケーションが IDiskQuotaControl::SetQuotaState などの Win32 メソッドを呼び出したときに送信できます。

操作: ファイル システム ドライバー

IRP_MJ_SET_QUOTA および IRP_MJ_QUERY_QUOTA は Windows NT 4.0 に存在していましたが、ファイル システムでは使用されませんでした。 Windows 2000 以降のシステムでは、NTFS でのディスク クォータのサポートに使用されます。 新しいファイル システムによるこれらの IRP のサポートはオプションです。

操作: レガシー ファイル システム フィルター ドライバー

フィルター ドライバーは、クォータ動作を明示的にオーバーライドする必要がない限り、この IRP をスタック上の次に下位のドライバーに渡す必要があります。

パラメーター

ファイル システムまたはフィルター ドライバーは、指定された IRP で IoGetCurrentIrpStackLocation を呼び出して、IRP 内の独自のスタックの場所へのポインターを取得します。 次のパラメーターでは、IrpIRP を指し、IrpSpIO_STACK_LOCATION を指します。 ドライバーは、IRP の次のメンバーと IRP スタックの場所に設定されている情報を使用して、クォータ情報の設定要求を処理できます。

  • DeviceObject ターゲット デバイス オブジェクトへのポインターです。

  • DeviceObject->フラグ : DO_BUFFERED_IO フラグが設定されている場合、呼び出し元は METHOD_BUFFERED I/O を要求しています。 それ以外の場合、呼び出し元は METHOD_NEITHER I/O を要求しています。

  • Irp->AssociatedIrp.SystemBuffer は、DO_BUFFERED_IO フラグが DeviceObject->Flags で設定されている場合、中間システム バッファーとして使用されるシステム提供のバッファーを指します。 それ以外の場合、このメンバーは NULL に設定されます。

  • Irp->Ioステータス は、最終的な完了ステータスと要求された操作に関する情報を受け取る IO_STATUS_BLOCK構造体を指します。

  • Irp->UserBufferボリュームに対して追加または変更されるクォータ エントリを含む、呼び出し元が提供するバッファーを指します。

  • IrpSp->FileObject は、DeviceObject に関連付けられているファイル オブジェクトを指します。

IrpSp->FileObject パラメーターには、FILE_OBJECT構造体でもある RelatedFileObject フィールドへのポインターが含まれています。 RelatedFileObject FILE_OBJECT 構造体のフィールドは、IRP_MJ_SET_QUOTA の処理中は無効なので、使用しないでください。

  • IrpSp->MajorFunction は IRP_MJ_SET_QUOTA に設定されます。

  • IrpSp->Parameters.SetQuota.Length が指すバッファの長さ (バイト単位) です。Irp->UserBuffer.

関連項目

FILE_QUOTA_INFORMATION

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoCheckQuotaBufferValidity

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_QUERY_QUOTA