FLT_PARAMETERS unión (fltkernel.h)
La unión FLT_PARAMETERS define, para un minifiltro, los parámetros específicos del tipo de solicitud asociados a una operación de E/S. En la sección Miembros de esta página de referencia se enumeran los miembros sin proporcionar descripciones. Vaya directamente a Comentarios para punteros a las descripciones de estructura reales.
Sintaxis
typedef union _FLT_PARAMETERS {
struct {
PIO_SECURITY_CONTEXT SecurityContext;
ULONG Options;
USHORT POINTER_ALIGNMENT FileAttributes;
USHORT ShareAccess;
ULONG POINTER_ALIGNMENT EaLength;
PVOID EaBuffer;
LARGE_INTEGER AllocationSize;
} Create;
struct {
PIO_SECURITY_CONTEXT SecurityContext;
ULONG Options;
USHORT POINTER_ALIGNMENT Reserved;
USHORT ShareAccess;
PVOID Parameters;
} CreatePipe;
struct {
PIO_SECURITY_CONTEXT SecurityContext;
ULONG Options;
USHORT POINTER_ALIGNMENT Reserved;
USHORT ShareAccess;
PVOID Parameters;
} CreateMailslot;
struct {
ULONG Length;
ULONG POINTER_ALIGNMENT Key;
LARGE_INTEGER ByteOffset;
PVOID ReadBuffer;
PMDL MdlAddress;
} Read;
struct {
ULONG Length;
ULONG POINTER_ALIGNMENT Key;
LARGE_INTEGER ByteOffset;
PVOID WriteBuffer;
PMDL MdlAddress;
} Write;
struct {
ULONG Length;
FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass;
PVOID InfoBuffer;
} QueryFileInformation;
struct {
ULONG Length;
FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass;
PFILE_OBJECT ParentOfTarget;
union {
struct {
BOOLEAN ReplaceIfExists;
BOOLEAN AdvanceOnly;
};
ULONG ClusterCount;
HANDLE DeleteHandle;
};
PVOID InfoBuffer;
} SetFileInformation;
struct {
ULONG Length;
PVOID EaList;
ULONG EaListLength;
ULONG POINTER_ALIGNMENT EaIndex;
PVOID EaBuffer;
PMDL MdlAddress;
} QueryEa;
struct {
ULONG Length;
PVOID EaBuffer;
PMDL MdlAddress;
} SetEa;
struct {
ULONG Length;
FS_INFORMATION_CLASS POINTER_ALIGNMENT FsInformationClass;
PVOID VolumeBuffer;
} QueryVolumeInformation;
struct {
ULONG Length;
FS_INFORMATION_CLASS POINTER_ALIGNMENT FsInformationClass;
PVOID VolumeBuffer;
} SetVolumeInformation;
union {
struct {
ULONG Length;
PUNICODE_STRING FileName;
FILE_INFORMATION_CLASS FileInformationClass;
ULONG POINTER_ALIGNMENT FileIndex;
PVOID DirectoryBuffer;
PMDL MdlAddress;
} QueryDirectory;
struct {
ULONG Length;
ULONG POINTER_ALIGNMENT CompletionFilter;
ULONG POINTER_ALIGNMENT Spare1;
ULONG POINTER_ALIGNMENT Spare2;
PVOID DirectoryBuffer;
PMDL MdlAddress;
} NotifyDirectory;
struct {
ULONG Length;
ULONG POINTER_ALIGNMENT CompletionFilter;
DIRECTORY_NOTIFY_INFORMATION_CLASS POINTER_ALIGNMENT DirectoryNotifyInformationClass;
ULONG POINTER_ALIGNMENT Spare2;
PVOID DirectoryBuffer;
PMDL MdlAddress;
} NotifyDirectoryEx;
} DirectoryControl;
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;
union {
struct {
ULONG OutputBufferLength;
ULONG POINTER_ALIGNMENT InputBufferLength;
ULONG POINTER_ALIGNMENT IoControlCode;
} Common;
struct {
ULONG OutputBufferLength;
ULONG POINTER_ALIGNMENT InputBufferLength;
ULONG POINTER_ALIGNMENT IoControlCode;
PVOID InputBuffer;
PVOID OutputBuffer;
PMDL OutputMdlAddress;
} Neither;
struct {
ULONG OutputBufferLength;
ULONG POINTER_ALIGNMENT InputBufferLength;
ULONG POINTER_ALIGNMENT IoControlCode;
PVOID SystemBuffer;
} Buffered;
struct {
ULONG OutputBufferLength;
ULONG POINTER_ALIGNMENT InputBufferLength;
ULONG POINTER_ALIGNMENT IoControlCode;
PVOID InputSystemBuffer;
PVOID OutputBuffer;
PMDL OutputMdlAddress;
} Direct;
struct {
ULONG OutputBufferLength;
ULONG POINTER_ALIGNMENT InputBufferLength;
ULONG POINTER_ALIGNMENT IoControlCode;
PVOID InputBuffer;
PVOID OutputBuffer;
} FastIo;
} DeviceIoControl;
struct {
PLARGE_INTEGER Length;
ULONG POINTER_ALIGNMENT Key;
LARGE_INTEGER ByteOffset;
PEPROCESS ProcessId;
BOOLEAN FailImmediately;
BOOLEAN ExclusiveLock;
} LockControl;
struct {
SECURITY_INFORMATION SecurityInformation;
ULONG POINTER_ALIGNMENT Length;
PVOID SecurityBuffer;
PMDL MdlAddress;
} QuerySecurity;
struct {
SECURITY_INFORMATION SecurityInformation;
PSECURITY_DESCRIPTOR SecurityDescriptor;
} SetSecurity;
struct {
ULONG_PTR ProviderId;
PVOID DataPath;
ULONG BufferSize;
PVOID Buffer;
} WMI;
struct {
ULONG Length;
PSID StartSid;
PFILE_GET_QUOTA_INFORMATION SidList;
ULONG SidListLength;
PVOID QuotaBuffer;
PMDL MdlAddress;
} QueryQuota;
struct {
ULONG Length;
PVOID QuotaBuffer;
PMDL MdlAddress;
} SetQuota;
union {
struct {
PCM_RESOURCE_LIST AllocatedResources;
PCM_RESOURCE_LIST AllocatedResourcesTranslated;
} StartDevice;
struct {
DEVICE_RELATION_TYPE Type;
} QueryDeviceRelations;
struct {
const GUID *InterfaceType;
USHORT Size;
USHORT Version;
PINTERFACE Interface;
PVOID InterfaceSpecificData;
} QueryInterface;
struct {
PDEVICE_CAPABILITIES Capabilities;
} DeviceCapabilities;
struct {
PIO_RESOURCE_REQUIREMENTS_LIST IoResourceRequirementList;
} FilterResourceRequirements;
struct {
ULONG WhichSpace;
PVOID Buffer;
ULONG Offset;
ULONG POINTER_ALIGNMENT Length;
} ReadWriteConfig;
struct {
BOOLEAN Lock;
} SetLock;
struct {
BUS_QUERY_ID_TYPE IdType;
} QueryId;
struct {
DEVICE_TEXT_TYPE DeviceTextType;
LCID POINTER_ALIGNMENT LocaleId;
} QueryDeviceText;
struct {
BOOLEAN InPath;
BOOLEAN Reserved[3];
DEVICE_USAGE_NOTIFICATION_TYPE POINTER_ALIGNMENT Type;
} UsageNotification;
} Pnp;
struct {
FS_FILTER_SECTION_SYNC_TYPE SyncType;
ULONG PageProtection;
PFS_FILTER_SECTION_SYNC_OUTPUT OutputInformation;
ULONG Flags;
ULONG AllocationAttributes;
} AcquireForSectionSynchronization;
struct {
PLARGE_INTEGER EndingOffset;
PERESOURCE *ResourceToRelease;
} AcquireForModifiedPageWriter;
struct {
PERESOURCE ResourceToRelease;
} ReleaseForModifiedPageWriter;
struct {
PIRP Irp;
PVOID FileInformation;
PULONG Length;
FILE_INFORMATION_CLASS FileInformationClass;
} QueryOpen;
struct {
LARGE_INTEGER FileOffset;
ULONG Length;
ULONG POINTER_ALIGNMENT LockKey;
BOOLEAN POINTER_ALIGNMENT CheckForReadOperation;
} FastIoCheckIfPossible;
struct {
PIRP Irp;
PFILE_NETWORK_OPEN_INFORMATION NetworkInformation;
} NetworkQueryOpen;
struct {
LARGE_INTEGER FileOffset;
ULONG POINTER_ALIGNMENT Length;
ULONG POINTER_ALIGNMENT Key;
PMDL *MdlChain;
} MdlRead;
struct {
PMDL MdlChain;
} MdlReadComplete;
struct {
LARGE_INTEGER FileOffset;
ULONG POINTER_ALIGNMENT Length;
ULONG POINTER_ALIGNMENT Key;
PMDL *MdlChain;
} PrepareMdlWrite;
struct {
LARGE_INTEGER FileOffset;
PMDL MdlChain;
} MdlWriteComplete;
struct {
ULONG DeviceType;
} MountVolume;
struct {
PVOID Argument1;
PVOID Argument2;
PVOID Argument3;
PVOID Argument4;
PVOID Argument5;
LARGE_INTEGER Argument6;
} Others;
} FLT_PARAMETERS, *PFLT_PARAMETERS;
Miembros
Create
Create.SecurityContext
Create.Options
Create.FileAttributes
Create.ShareAccess
Create.EaLength
Create.EaBuffer
Create.AllocationSize
CreatePipe
CreatePipe.SecurityContext
CreatePipe.Options
CreatePipe.Reserved
CreatePipe.ShareAccess
CreatePipe.Parameters
CreateMailslot
CreateMailslot.SecurityContext
CreateMailslot.Options
CreateMailslot.Reserved
CreateMailslot.ShareAccess
CreateMailslot.Parameters
Read
Read.Length
Read.Key
Read.ByteOffset
Read.ReadBuffer
Read.MdlAddress
Write
Write.Length
Write.Key
Write.ByteOffset
Write.WriteBuffer
Write.MdlAddress
QueryFileInformation
QueryFileInformation.Length
QueryFileInformation.FileInformationClass
QueryFileInformation.InfoBuffer
SetFileInformation
SetFileInformation.Length
SetFileInformation.FileInformationClass
SetFileInformation.ParentOfTarget
SetFileInformation.ReplaceIfExists
SetFileInformation.AdvanceOnly
SetFileInformation.ClusterCount
SetFileInformation.DeleteHandle
SetFileInformation.InfoBuffer
QueryEa
QueryEa.Length
QueryEa.EaList
QueryEa.EaListLength
QueryEa.EaIndex
QueryEa.EaBuffer
QueryEa.MdlAddress
SetEa
SetEa.Length
SetEa.EaBuffer
SetEa.MdlAddress
QueryVolumeInformation
QueryVolumeInformation.Length
QueryVolumeInformation.FsInformationClass
QueryVolumeInformation.VolumeBuffer
SetVolumeInformation
SetVolumeInformation.Length
SetVolumeInformation.FsInformationClass
SetVolumeInformation.VolumeBuffer
DirectoryControl
DirectoryControl.QueryDirectory
DirectoryControl.QueryDirectory.Length
DirectoryControl.QueryDirectory.FileName
DirectoryControl.QueryDirectory.FileInformationClass
DirectoryControl.QueryDirectory.FileIndex
DirectoryControl.QueryDirectory.DirectoryBuffer
DirectoryControl.QueryDirectory.MdlAddress
DirectoryControl.NotifyDirectory
DirectoryControl.NotifyDirectory.Length
DirectoryControl.NotifyDirectory.CompletionFilter
DirectoryControl.NotifyDirectory.Spare1
DirectoryControl.NotifyDirectory.Spare2
DirectoryControl.NotifyDirectory.DirectoryBuffer
DirectoryControl.NotifyDirectory.MdlAddress
DirectoryControl.NotifyDirectoryEx
DirectoryControl.NotifyDirectoryEx.Length
DirectoryControl.NotifyDirectoryEx.CompletionFilter
DirectoryControl.NotifyDirectoryEx.DirectoryNotifyInformationClass
DirectoryControl.NotifyDirectoryEx.Spare2
DirectoryControl.NotifyDirectoryEx.DirectoryBuffer
DirectoryControl.NotifyDirectoryEx.MdlAddress
FileSystemControl
FileSystemControl.VerifyVolume
FileSystemControl.VerifyVolume.Vpb
FileSystemControl.VerifyVolume.DeviceObject
FileSystemControl.Common
FileSystemControl.Common.OutputBufferLength
FileSystemControl.Common.InputBufferLength
FileSystemControl.Common.FsControlCode
FileSystemControl.Neither
FileSystemControl.Neither.OutputBufferLength
FileSystemControl.Neither.InputBufferLength
FileSystemControl.Neither.FsControlCode
FileSystemControl.Neither.InputBuffer
FileSystemControl.Neither.OutputBuffer
FileSystemControl.Neither.OutputMdlAddress
FileSystemControl.Buffered
FileSystemControl.Buffered.OutputBufferLength
FileSystemControl.Buffered.InputBufferLength
FileSystemControl.Buffered.FsControlCode
FileSystemControl.Buffered.SystemBuffer
FileSystemControl.Direct
FileSystemControl.Direct.OutputBufferLength
FileSystemControl.Direct.InputBufferLength
FileSystemControl.Direct.FsControlCode
FileSystemControl.Direct.InputSystemBuffer
FileSystemControl.Direct.OutputBuffer
FileSystemControl.Direct.OutputMdlAddress
DeviceIoControl
DeviceIoControl.Common
DeviceIoControl.Common.OutputBufferLength
DeviceIoControl.Common.InputBufferLength
DeviceIoControl.Common.IoControlCode
DeviceIoControl.Neither
DeviceIoControl.Neither.OutputBufferLength
DeviceIoControl.Neither.InputBufferLength
DeviceIoControl.Neither.IoControlCode
DeviceIoControl.Neither.InputBuffer
DeviceIoControl.Neither.OutputBuffer
DeviceIoControl.Neither.OutputMdlAddress
DeviceIoControl.Buffered
DeviceIoControl.Buffered.OutputBufferLength
DeviceIoControl.Buffered.InputBufferLength
DeviceIoControl.Buffered.IoControlCode
DeviceIoControl.Buffered.SystemBuffer
DeviceIoControl.Direct
DeviceIoControl.Direct.OutputBufferLength
DeviceIoControl.Direct.InputBufferLength
DeviceIoControl.Direct.IoControlCode
DeviceIoControl.Direct.InputSystemBuffer
DeviceIoControl.Direct.OutputBuffer
DeviceIoControl.Direct.OutputMdlAddress
DeviceIoControl.FastIo
DeviceIoControl.FastIo.OutputBufferLength
DeviceIoControl.FastIo.InputBufferLength
DeviceIoControl.FastIo.IoControlCode
DeviceIoControl.FastIo.InputBuffer
DeviceIoControl.FastIo.OutputBuffer
LockControl
LockControl.Length
LockControl.Key
LockControl.ByteOffset
LockControl.ProcessId
LockControl.FailImmediately
LockControl.ExclusiveLock
QuerySecurity
QuerySecurity.SecurityInformation
QuerySecurity.Length
QuerySecurity.SecurityBuffer
QuerySecurity.MdlAddress
SetSecurity
SetSecurity.SecurityInformation
SetSecurity.SecurityDescriptor
WMI
WMI.ProviderId
WMI.DataPath
WMI.BufferSize
WMI.Buffer
QueryQuota
QueryQuota.Length
QueryQuota.StartSid
QueryQuota.SidList
QueryQuota.SidListLength
QueryQuota.QuotaBuffer
QueryQuota.MdlAddress
SetQuota
SetQuota.Length
SetQuota.QuotaBuffer
SetQuota.MdlAddress
Pnp
Pnp.StartDevice
Pnp.StartDevice.AllocatedResources
Pnp.StartDevice.AllocatedResourcesTranslated
Pnp.QueryDeviceRelations
Pnp.QueryDeviceRelations.Type
Pnp.QueryInterface
Pnp.QueryInterface.InterfaceType
Pnp.QueryInterface.Size
Pnp.QueryInterface.Version
Pnp.QueryInterface.Interface
Pnp.QueryInterface.InterfaceSpecificData
Pnp.DeviceCapabilities
Pnp.DeviceCapabilities.Capabilities
Pnp.FilterResourceRequirements
Pnp.FilterResourceRequirements.IoResourceRequirementList
Pnp.ReadWriteConfig
Pnp.ReadWriteConfig.WhichSpace
Pnp.ReadWriteConfig.Buffer
Pnp.ReadWriteConfig.Offset
Pnp.ReadWriteConfig.Length
Pnp.SetLock
Pnp.SetLock.Lock
Pnp.QueryId
Pnp.QueryId.IdType
Pnp.QueryDeviceText
Pnp.QueryDeviceText.DeviceTextType
Pnp.QueryDeviceText.LocaleId
Pnp.UsageNotification
Pnp.UsageNotification.InPath
Pnp.UsageNotification.Reserved[3]
Pnp.UsageNotification.Type
AcquireForSectionSynchronization
AcquireForSectionSynchronization.SyncType
AcquireForSectionSynchronization.PageProtection
AcquireForSectionSynchronization.OutputInformation
AcquireForSectionSynchronization.Flags
AcquireForSectionSynchronization.AllocationAttributes
AcquireForModifiedPageWriter
AcquireForModifiedPageWriter.EndingOffset
AcquireForModifiedPageWriter.ResourceToRelease
ReleaseForModifiedPageWriter
ReleaseForModifiedPageWriter.ResourceToRelease
QueryOpen
QueryOpen.Irp
QueryOpen.FileInformation
QueryOpen.Length
QueryOpen.FileInformationClass
FastIoCheckIfPossible
FastIoCheckIfPossible.FileOffset
FastIoCheckIfPossible.Length
FastIoCheckIfPossible.LockKey
FastIoCheckIfPossible.CheckForReadOperation
NetworkQueryOpen
NetworkQueryOpen.Irp
NetworkQueryOpen.NetworkInformation
MdlRead
MdlRead.FileOffset
MdlRead.Length
MdlRead.Key
MdlRead.MdlChain
MdlReadComplete
MdlReadComplete.MdlChain
PrepareMdlWrite
PrepareMdlWrite.FileOffset
PrepareMdlWrite.Length
PrepareMdlWrite.Key
PrepareMdlWrite.MdlChain
MdlWriteComplete
MdlWriteComplete.FileOffset
MdlWriteComplete.MdlChain
MountVolume
MountVolume.DeviceType
Others
Others.Argument1
Others.Argument2
Others.Argument3
Others.Argument4
Others.Argument5
Others.Argument6
Comentarios
La estructura FLT_PARAMETERS se almacena en el campo Parámetros de la estructura FLT_IO_PARAMETER_BLOCK para la operación. (Un puntero a la estructura FLT_IO_PARAMETER_BLOCK se almacena en el campo Iopb de la estructura FLT_CALLBACK_DATA para la operación).
En la tabla siguiente se enumeran todos los miembros de estructura de la unión de FLT_PARAMETERS y, a continuación, se vinculan a la página que describe los miembros de esa estructura para el IRP asociado. Las estructuras se enumeran en el orden en que se definen en FLT_PARAMETERS.
Las siguientes operaciones de E/S no tienen parámetros y, por lo tanto, no tienen un miembro correspondiente dentro de la estructura FLT_PARAMETERS. Los controladores minifiltros que registran una rutina de devolución de llamada para estas operaciones de E/S deben realizar cualquier procesamiento y devolución necesarios:
- IRP_MJ_ACQUIRE_FOR_CC_FLUSH
- IRP_MJ_CLEANUP
- IRP_MJ_CLOSE
- IRP_MJ_FLUSH_BUFFERS
- IRP_MJ_RELEASE_FOR_CC_FLUSH
- IRP_MJ_RELEASE_FOR_SECTION_SYNCHRONIZATION
- IRP_MJ_SHUTDOWN
- IRP_MJ_VOLUME_DISMOUNT
Tenga en cuenta que los términos "adquirir" o "liberar" en algunos nombres de operación, como IRP_MJ_ACQUIRE_FOR_CC_FLUSH
y IRP_MJ_RELEASE_FOR_CC_FLUSH
, no implican ninguna garantía de que un minifiltro siempre verá ambas operaciones. Al igual que con las operaciones como IRP_MJ_CREATE
y IRP_MJ_CLEANUP
, se puede impedir que un minifiltro observe la segunda operación por otros factores, como recibir una instanceTeardownStartCallback antes de que se produzca la segunda operación.
Requisitos
Requisito | Valor |
---|---|
Header | fltkernel.h (incluya Fltkernel.h) |