IRP_MJ_SET_QUOTA (FS- und Filtertreiber)

Sendebedingungen

Der E/A-Manager sendet die IRP_MJ_SET_QUOTA-Anforderung. Sie kann beispielsweise gesendet werden, wenn eine Benutzermodusanwendung eine Win32-Methode wie IDiskQuotaControl::SetQuotaState aufgerufen hat.

Vorgang: Dateisystemtreiber

IRP_MJ_SET_QUOTA und IRP_MJ_QUERY_QUOTA in Windows NT 4.0 vorhanden, wurden jedoch nicht von Dateisystemen verwendet. Unter Windows 2000 und höher werden sie für die Unterstützung von Datenträgerkontingenten in NTFS verwendet. Die Unterstützung dieser IRPs durch neue Dateisysteme ist optional.

Vorgang: Legacy-Dateisystemfiltertreiber

Der Filtertreiber sollte diesen IRP an den nächstniedrigen Treiber im Stapel übergeben, es sei denn, er muss das Kontingentverhalten explizit überschreiben.

Parameter

Ein Dateisystem oder Filtertreiber ruft IoGetCurrentIrpStackLocation für den angegebenen IRP auf, um einen Zeiger auf den eigenen Stapelspeicherort im IRP zu erhalten. In den folgenden Parametern verweist Irp auf den IRP und IrpSp auf die IO_STACK_LOCATION. Der Treiber kann die Informationen, die in den folgenden Elementen des IRP und des IRP-Stapelspeicherorts festgelegt sind, verwenden, um eine Anforderung für festgelegte Kontingentinformationen zu verarbeiten:

  • DeviceObject ist ein Zeiger auf das Zielgerätobjekt.

  • DeviceObject:>Flags : Wenn das flag DO_BUFFERED_IO festgelegt ist, hat der Aufrufer METHOD_BUFFERED E/A angefordert. Andernfalls hat der Aufrufer METHOD_NEITHER E/A angefordert.

  • Irp->AssociatedIrp.SystemBuffer verweist auf einen vom System bereitgestellten Puffer, der als Zwischensystempuffer verwendet werden soll, wenn das flag DO_BUFFERED_IO in DeviceObject-Flags> festgelegt ist. Andernfalls wird dieser Member auf NULL festgelegt.

  • Irp->IoStatus verweist auf eine IO_STATUS_BLOCK-Struktur, die den endgültigen Abschluss status und Informationen zum angeforderten Vorgang empfängt.

  • Irp->UserBuffer verweist auf einen vom Aufrufer bereitgestellten Puffer, der die Kontingenteinträge enthält, die für das Volume hinzugefügt oder geändert werden sollen.

  • IrpSp->FileObject verweist auf das Dateiobjekt, das DeviceObject zugeordnet ist.

Der Parameter IrpSp-FileObject> enthält einen Zeiger auf das RelatedFileObject-Feld, das auch eine FILE_OBJECT-Struktur ist. Das Feld RelatedFileObject der FILE_OBJECT-Struktur ist während der Verarbeitung von IRP_MJ_SET_QUOTA ungültig und sollte nicht verwendet werden.

  • IrpSp->MajorFunction ist auf IRP_MJ_SET_QUOTA festgelegt.

  • IrpSp->Parameters.SetQuota.Length ist die Länge des Puffers in Bytes, auf den Irp-UserBuffer> verweist.

Weitere Informationen

FILE_QUOTA_INFORMATION

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoCheckQuotaBufferValidity

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_QUERY_QUOTA