FLT_PARAMETERS union (fltkernel.h)
L’union FLT_PARAMETERS définit, pour un minifiltre, les paramètres spécifiques au type de requête associés à une opération d’E/S. La section Membres de cette page de référence répertorie les membres sans fournir de description. Accédez directement à Remarques pour obtenir des pointeurs vers les descriptions de structure réelles.
Syntaxe
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;
Membres
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
Remarques
La structure FLT_PARAMETERS est stockée dans le champ Paramètres de la structure FLT_IO_PARAMETER_BLOCK de l’opération. (Un pointeur vers la structure FLT_IO_PARAMETER_BLOCK est stocké dans le champ Iopb de la structure FLT_CALLBACK_DATA pour l’opération.)
Le tableau suivant répertorie chaque membre de structure de l’union FLT_PARAMETERS, puis établit des liens vers la page qui décrit les membres de cette structure pour l’IRP associé. Les structures sont répertoriées dans l’ordre dans lequel elles sont définies dans FLT_PARAMETERS.
Les opérations d’E/S suivantes n’ont pas de paramètres et n’ont donc pas de membre correspondant dans la structure FLT_PARAMETERS. Les pilotes Minifilter qui inscrivent une routine de rappel pour ces opérations d’E/S doivent effectuer tout traitement et retour nécessaires :
- 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
Notez que les termes « acquérir » ou « libérer » dans certains noms d’opérations, tels que IRP_MJ_ACQUIRE_FOR_CC_FLUSH
et IRP_MJ_RELEASE_FOR_CC_FLUSH
, n’impliquent aucune garantie qu’un minifiltre verra toujours les deux opérations. Tout comme pour les opérations telles que IRP_MJ_CREATE
et IRP_MJ_CLEANUP
, un minifiltre peut être empêché d’observer la deuxième opération par d’autres facteurs, tels que la réception d’une InstanceTeardownStartCallback avant la deuxième opération.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | fltkernel.h (inclure Fltkernel.h) |