Delen via


FLT_PARAMETERS voor IRP_MJ_FILE_SYSTEM_CONTROL samenvoeging

Samenvoegingsonderdeel dat wordt gebruikt wanneer het veld MajorFunction van de FLT_IO_PARAMETER_BLOCK structuur voor de bewerking wordt IRP_MJ_FILE_SYSTEM_CONTROL.

Syntaxis

typedef union _FLT_PARAMETERS {
  ...   ;
  union {
    struct {
      PVPB           Vpb;
      PDEVICE_OBJECT DeviceObject;
    } VerifyVolume;
    struct {
      ULONG                   OutputBufferLength;
      ULONG POINTER_ALIGNMENT InputBufferLength;
      ULONG POINTER_ALIGNMENT FsControlCode;
    } Common;
    struct {
      ULONG                    OutputBufferLength;
      ULONG POINTER_ALIGNMENT  InputBufferLength;
      ULONG POINTER_ALIGNMENT  FsControlCode;
      PVOID                    InputBuffer;
      PVOID                    OutputBuffer;
      PMDL                     OutputMdlAddress;
    } Neither;
    struct {
      ULONG                   OutputBufferLength;
      ULONG POINTER_ALIGNMENT InputBufferLength;
      ULONG POINTER_ALIGNMENT FsControlCode;
      PVOID                   SystemBuffer;
    } Buffered;
    struct {
      ULONG                   OutputBufferLength;
      ULONG POINTER_ALIGNMENT InputBufferLength;
      ULONG POINTER_ALIGNMENT FsControlCode;
      PVOID                   InputSystemBuffer;
      PVOID                   OutputBuffer;
      PMDL                    OutputMdlAddress;
    } Direct;
  } FileSystemControl;
  ...   ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;

Leden

  • FileSystemControl: structuur met de volgende leden.

  • VerifyVolume: Union-onderdeel dat wordt gebruikt voor IRP_MN_VERIFY_VOLUME bewerkingen.

  • Vpb: Wijs het volumeparameterblok (VPB) aan om het volume te verifiëren.

  • DeviceObject: Wijs het apparaatobject aan om het volume te verifiëren.

  • Algemeen: Samenvoegingsonderdeel dat wordt gebruikt voor alle buffermethoden voor IRP_MN_KERNEL_CALL- en IRP_MN_USER_FS_REQUEST-bewerkingen.

  • Common.OutputBufferLength: Lengte, in bytes, van de buffer waarnaar het lid Neither.OutputBuffer of Direct.OutputBuffer verwijst.

  • Common.InputBufferLength: Lengte, in bytes, van de buffer waarnaar het lid Neither.InputBuffer, Buffered.SystemBuffer of Direct.InputSystemBuffer verwijst.

  • Common.FsControlCode: FSCTL-functiecode die moet worden doorgegeven aan het bestandssysteem, bestandssysteemfilter of minifilterstuurprogramma voor het doelapparaat.

Zie I /O-besturingscodes gebruiken in de architectuurhandleiding voor kernelmodus en 'Codes voor apparaatinvoer en uitvoerbeheer' in de Microsoft Windows SDK voor gedetailleerde informatie over IOCTL- en FSCTL-aanvragen. (Deze resource is mogelijk niet beschikbaar in sommige talen en landen.)

  • Geen van beide: een samenvoegingsonderdeel dat wordt gebruikt voor IRP_MN_KERNEL_CALL- en IRP_MN_USER_FS_REQUEST bewerkingen wanneer de buffermethode wordt METHOD_NEITHER. Zie I/O-besturingscodes definiëren voor meer informatie over buffermethoden.

  • Geen van beide.InputBuffer: virtueel adres in de gebruikersmodus van de invoerbuffer dat de oorspronkelijke aanvrager van de opgegeven bewerking heeft opgegeven. De I/O-beheer en Filterbeheer valideren deze adressen niet. Om ervoor te zorgen dat adressen van gebruikersruimte geldig zijn, moet het minifilter routines zoals ProbeForRead, ProbeForWrite en MmProbeAndLockPages gebruiken, waarbij alle bufferverwijzingen in try/except-blokken worden geplaatst. Zie Using Neither Buffered Nor Direct I/O and Errors in Referencing User-Space Addresses voor meer informatie.

  • Geen.OutputBuffer: virtueel adres in de gebruikersmodus van de uitvoerbuffer dat de oorspronkelijke aanvrager van de opgegeven bewerking heeft opgegeven. De I/O-beheer en Filterbeheer valideren deze adressen niet. Om ervoor te zorgen dat adressen van gebruikersruimte geldig zijn, moet het minifilter routines zoals ProbeForRead, ProbeForWrite en MmProbeAndLockPages gebruiken, waarbij alle bufferverwijzingen in try/except-blokken worden geplaatst. Zie Using Neither Buffered Nor Direct I/O and Errors in Referencing User-Space Addresses voor meer informatie. Geen van beide.OutputBuffer is optioneel en kan NULL zijn als er een MDL is opgegeven in Neither.OutputMdlAddress. Zie opmerkingen.

  • Neither.OutputMdlAddress: Adres van een geheugendescriptorlijst (MDL) die de buffer beschrijft waarnaar het member Neither.OutputBuffer verwijst. Dit lid is optioneel en kan NULL zijn als er een buffer is opgegeven in Neither.OutputBuffer.

  • Gebufferd: samenvoegingsonderdeel dat wordt gebruikt voor IRP_MN_KERNEL_CALL- en IRP_MN_USER_FS_REQUEST bewerkingen wanneer de buffermethode wordt METHOD_BUFFERED. Zie I/O-besturingscodes definiëren voor meer informatie over buffermethoden.

  • Buffered.SystemBuffer: Adres van de door het systeem toegewezen buffer voor de bewerking. In METHOD_BUFFERED I/O wordt deze buffer gebruikt voor zowel invoer als uitvoer. Zie Methoden voor toegang tot gegevensbuffers voor meer informatie.

  • Direct: union component used for IRP_MN_KERNEL_CALL and IRP_MN_USER_FS_REQUEST operations when the buffering method is METHOD_IN_DIRECT of METHOD_OUT_DIRECT. Zie I/O-besturingscodes definiëren in de architectuurhandleiding voor kernelmodus voor meer informatie over buffermethoden.

  • Direct.InputSystemBuffer: Adres van de invoerbuffer voor de bewerking. Deze buffer wordt vergrendeld door het besturingssysteem, zodat deze veilig toegankelijk is vanuit de kernelmodus. Zie Methoden voor toegang tot gegevensbuffers voor meer informatie.

  • Direct.OutputBuffer: virtueel adres in de gebruikersmodus van de uitvoerbuffer dat de oorspronkelijke aanvrager van de opgegeven bewerking heeft opgegeven. In directe I/O, in tegenstelling tot METHOD_NEITHER I/O, vergrendelt het besturingssysteem deze buffer zodat deze veilig toegankelijk is vanuit de kernelmodus, zolang het minifilter zich in dezelfde procescontext bevindt als de oorspronkelijke aanvrager van de I/O-bewerking. (Anders moet mmGetSystemAddressForMdlSafe worden aangeroepen om het systeemadres op te halen van de MDL waarnaar het lid OutputMdlAddress verwijst.) Zie Direct I/O en Fouten gebruiken in Directe I/O voor meer informatie.

  • Direct.OutputMdlAddress: Adres van een geheugendescriptorlijst (MDL) die de buffer beschrijft waarnaar het lid Direct.OutputBuffer verwijst. Dit lid is vereist en kan niet NULL zijn.

Opmerkingen

De FLT_PARAMETERS structuur voor IRP_MJ_FILE_SYSTEM_CONTROL bewerkingen bevat de parameters voor een bestandssysteembeheerinformatiebewerking die wordt vertegenwoordigd door een callbackgegevensstructuur (FLT_CALLBACK_DATA). Deze bevindt zich in een FLT_IO_PARAMETER_BLOCK structuur.

Als zowel een Noch.OutputBuffer - als Geen.MdlAddress-buffer worden opgegeven, wordt het aanbevolen om minifilters de MDL te gebruiken.

Als een minifilter de waarde van Neither.MdlAddress wijzigt, wordt na het terugbellen van de postbewerking de MDL die momenteel is opgeslagen in Neither.MdlAddress , vrijgemaakt en wordt de vorige waarde van Neither.MdlAddress hersteld.

IRP_MJ_FILE_SYSTEM_CONTROL is een op IRP gebaseerde bewerking.

Behoeften

Vereistetype Voorwaarde
Koptekst Fltkernel.h (inclusief Fltkernel.h)

Zie ook

FLT_CALLBACK_DATA

FLT_IO_PARAMETER_BLOCK

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

FLT_PARAMETERS

FltFsControlFile

IoBuildAsynchronousFsdRequest

IoBuildSynchronousFsdRequest

IoVerifyVolume

IRP_MJ_FILE_SYSTEM_CONTROL

MmGetSystemAddressForMdlSafe

MmProbeAndLockPages

ProbeForRead

ProbeForWrite

ZwFsControlFile