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->Flags : DO_BUFFERED_IO 플래그가 설정된 경우 호출자가 METHOD_BUFFERED I/O를 요청했습니다. 그렇지 않으면 호출자가 METHOD_NEITHER I/O를 요청했습니다.

  • Irp->DO_BUFFERED_IO 플래그가 DeviceObject-Flags>에 설정된 경우 AssociatedIrp.SystemBuffer는 중간 시스템 버퍼로 사용할 시스템 제공 버퍼를 가리킵니다. 그렇지 않으면 이 멤버가 NULL로 설정됩니다.

  • Irp->IoStatus는 최종 완료 상태 수신하는 IO_STATUS_BLOCK 구조와 요청된 작업에 대한 정보를 가리킵니다.

  • Irp->UserBuffer는 볼륨에 대해 추가 또는 수정할 할당량 항목이 포함된 호출자 제공 버퍼를 가리킵니다.

  • IrpSp->FileObjectDeviceObject와 연결된 파일 개체를 가리킵니다.

IrpSp-FileObject> 매개 변수에는 relatedFileObject 필드에 대한 포인터가 포함되어 있으며 이는 FILE_OBJECT 구조이기도 합니다. FILE_OBJECT 구조체의 RelatedFileObject 필드는 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