FLT_PARAMETERS union (fltkernel.h)
FLT_PARAMETERS共用体は、ミニフィルターに対して、I/O 操作に関連付けられている要求の種類固有のパラメーターを定義します。 このリファレンス ページの [メンバー ] セクションには、説明を提供せずにメンバーが一覧表示されます。 実際の構造体 の 説明へのポインターについては、「解説」に直接移動します。
構文
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;
メンバー
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
注釈
FLT_PARAMETERS構造体は、操作のFLT_IO_PARAMETER_BLOCK構造体の Parameters フィールドに格納されます。 (FLT_IO_PARAMETER_BLOCK構造体へのポインターは、操作のFLT_CALLBACK_DATA構造体の Iopb フィールドに格納されます)。
次の表に、FLT_PARAMETERS共用体の各構造体メンバーを示し、関連付けられた IRP の構造体のメンバーを説明するページへのリンクを示します。 構造体は、FLT_PARAMETERS内で定義されている順序で一覧表示されます。
次の I/O 操作にはパラメーターがないため、FLT_PARAMETERS構造体内に対応するメンバーがありません。 これらの I/O 操作のコールバック ルーチンを登録するミニフィルター ドライバーは、必要な処理を実行し、次を返す必要があります。
- 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
や などのIRP_MJ_ACQUIRE_FOR_CC_FLUSH
IRP_MJ_RELEASE_FOR_CC_FLUSH
一部の操作名の "acquire" または "release" という用語は、ミニフィルターで常に両方の操作が表示されることを保証するものではありません。 や などの操作と同様に、ミニフィルターは、2 番目の操作が発生する前に InstanceTeardownStartCallback を受け取るなど、他の要因によって 2 番目の操作を監視できない場合があります。IRP_MJ_CREATE
IRP_MJ_CLEANUP
要件
要件 | 値 |
---|---|
Header | fltkernel.h (Fltkernel.h を含む) |