次の方法で共有


IO_STACK_LOCATION構造体 (wdm.h)

IO_STACK_LOCATION 構造体は、各 IRP に関連付けられている I/O スタック内のエントリである、I/O スタックの場所を定義します。 IRP 内の各 I/O スタックの場所には、いくつかの共通メンバーといくつかの要求の種類固有のメンバーがあります。

構文

typedef struct _IO_STACK_LOCATION {
  UCHAR                  MajorFunction;
  UCHAR                  MinorFunction;
  UCHAR                  Flags;
  UCHAR                  Control;
  union {
    struct {
      PIO_SECURITY_CONTEXT     SecurityContext;
      ULONG                    Options;
      USHORT POINTER_ALIGNMENT FileAttributes;
      USHORT                   ShareAccess;
      ULONG POINTER_ALIGNMENT  EaLength;
    } Create;
    struct {
      PIO_SECURITY_CONTEXT          SecurityContext;
      ULONG                         Options;
      USHORT POINTER_ALIGNMENT      Reserved;
      USHORT                        ShareAccess;
      PNAMED_PIPE_CREATE_PARAMETERS Parameters;
    } CreatePipe;
    struct {
      PIO_SECURITY_CONTEXT        SecurityContext;
      ULONG                       Options;
      USHORT POINTER_ALIGNMENT    Reserved;
      USHORT                      ShareAccess;
      PMAILSLOT_CREATE_PARAMETERS Parameters;
    } CreateMailslot;
    struct {
      ULONG                   Length;
      ULONG POINTER_ALIGNMENT Key;
      ULONG                   Flags;
      LARGE_INTEGER           ByteOffset;
    } Read;
    struct {
      ULONG                   Length;
      ULONG POINTER_ALIGNMENT Key;
      ULONG                   Flags;
      LARGE_INTEGER           ByteOffset;
    } Write;
    struct {
      ULONG                   Length;
      PUNICODE_STRING         FileName;
      FILE_INFORMATION_CLASS  FileInformationClass;
      ULONG POINTER_ALIGNMENT FileIndex;
    } QueryDirectory;
    struct {
      ULONG                   Length;
      ULONG POINTER_ALIGNMENT CompletionFilter;
    } NotifyDirectory;
    struct {
      ULONG                                                Length;
      ULONG POINTER_ALIGNMENT                              CompletionFilter;
      DIRECTORY_NOTIFY_INFORMATION_CLASS POINTER_ALIGNMENT DirectoryNotifyInformationClass;
    } NotifyDirectoryEx;
    struct {
      ULONG                                    Length;
      FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass;
    } QueryFile;
    struct {
      ULONG                                    Length;
      FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass;
      PFILE_OBJECT                             FileObject;
      union {
        struct {
          BOOLEAN ReplaceIfExists;
          BOOLEAN AdvanceOnly;
        };
        ULONG  ClusterCount;
        HANDLE DeleteHandle;
      };
    } SetFile;
    struct {
      ULONG                   Length;
      PVOID                   EaList;
      ULONG                   EaListLength;
      ULONG POINTER_ALIGNMENT EaIndex;
    } QueryEa;
    struct {
      ULONG Length;
    } SetEa;
    struct {
      ULONG                                  Length;
      FS_INFORMATION_CLASS POINTER_ALIGNMENT FsInformationClass;
    } QueryVolume;
    struct {
      ULONG                                  Length;
      FS_INFORMATION_CLASS POINTER_ALIGNMENT FsInformationClass;
    } SetVolume;
    struct {
      ULONG                   OutputBufferLength;
      ULONG POINTER_ALIGNMENT InputBufferLength;
      ULONG POINTER_ALIGNMENT FsControlCode;
      PVOID                   Type3InputBuffer;
    } FileSystemControl;
    struct {
      PLARGE_INTEGER          Length;
      ULONG POINTER_ALIGNMENT Key;
      LARGE_INTEGER           ByteOffset;
    } LockControl;
    struct {
      ULONG                   OutputBufferLength;
      ULONG POINTER_ALIGNMENT InputBufferLength;
      ULONG POINTER_ALIGNMENT IoControlCode;
      PVOID                   Type3InputBuffer;
    } DeviceIoControl;
    struct {
      SECURITY_INFORMATION    SecurityInformation;
      ULONG POINTER_ALIGNMENT Length;
    } QuerySecurity;
    struct {
      SECURITY_INFORMATION SecurityInformation;
      PSECURITY_DESCRIPTOR SecurityDescriptor;
    } SetSecurity;
    struct {
      PVPB           Vpb;
      PDEVICE_OBJECT DeviceObject;
      ULONG          OutputBufferLength;
    } MountVolume;
    struct {
      PVPB           Vpb;
      PDEVICE_OBJECT DeviceObject;
    } VerifyVolume;
    struct {
      struct _SCSI_REQUEST_BLOCK *Srb;
    } Scsi;
    struct {
      ULONG                       Length;
      PSID                        StartSid;
      PFILE_GET_QUOTA_INFORMATION SidList;
      ULONG                       SidListLength;
    } QueryQuota;
    struct {
      ULONG Length;
    } SetQuota;
    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;
    struct {
      SYSTEM_POWER_STATE PowerState;
    } WaitWake;
    struct {
      PPOWER_SEQUENCE PowerSequence;
    } PowerSequence;
#if ...
    struct {
      union {
        ULONG                      SystemContext;
        SYSTEM_POWER_STATE_CONTEXT SystemPowerStateContext;
      };
      POWER_STATE_TYPE POINTER_ALIGNMENT Type;
      POWER_STATE POINTER_ALIGNMENT      State;
      POWER_ACTION POINTER_ALIGNMENT     ShutdownType;
    } Power;
#else
    struct {
      ULONG                              SystemContext;
      POWER_STATE_TYPE POINTER_ALIGNMENT Type;
      POWER_STATE POINTER_ALIGNMENT      State;
      POWER_ACTION POINTER_ALIGNMENT     ShutdownType;
    } Power;
#endif
    struct {
      PCM_RESOURCE_LIST AllocatedResources;
      PCM_RESOURCE_LIST AllocatedResourcesTranslated;
    } StartDevice;
    struct {
      ULONG_PTR ProviderId;
      PVOID     DataPath;
      ULONG     BufferSize;
      PVOID     Buffer;
    } WMI;
    struct {
      PVOID Argument1;
      PVOID Argument2;
      PVOID Argument3;
      PVOID Argument4;
    } Others;
  } Parameters;
  PDEVICE_OBJECT         DeviceObject;
  PFILE_OBJECT           FileObject;
  PIO_COMPLETION_ROUTINE CompletionRoutine;
  PVOID                  Context;
} IO_STACK_LOCATION, *PIO_STACK_LOCATION;

メンバーズ

MajorFunction

IRP の主要な関数コード 実行する I/O 操作の種類を示します。

MinorFunction

MajorFunctionのサブ関数コード。 PnP マネージャー、電源マネージャー、ファイル システム ドライバー、SCSI クラス ドライバーは、一部の要求に対してこのメンバーを設定します。

Flags

要求の種類固有の値は、ファイル システム ドライバーによってほぼ排他的に使用されます。 リムーバブル メディア デバイス ドライバーは、デバイス オブジェクトの Flags が DO_VERIFY_VOLUME で設定されている場合でも、読み取り要求のSL_OVERRIDE_VERIFY_VOLUMEでこのメンバーが設定されているかどうかを確認して、読み取り操作を続行するかどうかを判断します。 リムーバブル メディア デバイス ドライバーの上に重ねられた中間ドライバーは、すべての受信 IRP_MJ_READ 要求で次の下位ドライバーの I/O スタックの場所にこのメンバーをコピーする必要があります。

IRP_MJ_CREATEの他の SL_* フラグのドキュメントについては、IRP_MJ_CREATE (IFS)を参照してください。

使用可能なフラグ値は次のとおりです。

価値 形容
SL_KEY_SPECIFIED 0x01 冗長性が有効になっているときに特定のセクターのコピーを読み取る必要がある IO_STACK_LOCATION.Parameters.Read(OrWrite).Key が含まれていることを示します。 現在、このフラグはIRP_MJ_READ操作でのみ使用されます。
SL_OVERRIDE_VERIFY_VOLUME 0x02 このフラグは、デバイス オブジェクトの Flags が DO_VERIFY_VOLUME で設定されている場合でも、読み取り操作を続行するかどうかを決定するために使用されます。
SL_WRITE_THROUGH 0x04 このフラグは、ディスクが永続的な記憶域メディアへの書き込みを強制するために、ディスクが書き込みキャッシュをバイパスするように、適切なフラグを設定するように記憶域ドライバーに通知します。 このフラグはデバイス固有です。すべてのディスク ドライブがディスク キャッシュのバイパスをサポートしているわけではありません。
SL_FT_SEQUENTIAL_WRITE 0x08 システム用に予約されています。
SL_FORCE_DIRECT_WRITE 0x10 このフラグを使用すると、カーネル モード ドライバーは、ファイル システムと記憶域ドライバー スタックで直接書き込みをブロックするため、通常は書き込むことができないボリューム領域に書き込むことができます。 直接書き込みブロックは、セキュリティの向上に役立ちます。 このフラグは、ファイル システム レイヤーとストレージ スタック レイヤーの両方でオンになります。 直接書き込みブロックの詳細については、「ボリュームとディスクへの直接書き込み操作のブロック」を参照してください。
SL_REALTIME_STREAM 0x20 このフラグは、IO が CD-ROM クラス ドライバーへのリアルタイム ストリーミング要求用であることを示します。 これにより、リアルタイム ストリーミングの保証された速度で読み取り/書き込み操作を実行するようにドライバーにヒントが与えられます。 このフラグは光メディアでのみ有効です。
SL_PERSISTENT_MEMORY_FIXED_MAPPING 0x20 書き込み要求のバイトの永続メモリ マッピングは、この書き込み要求の処理中に変更できません。 このフラグは、永続メモリ デバイスとIRP_MJ_WRITEでのみ有効です。

永続メモリ デバイスの場合、永続メモリ デバイスで再マッピング (特定の LBA の物理アドレスを変更) する理由の 1 つは、効率的なセクター レベルのアトミック性を提供することです。 フラグが設定されていない場合、特にドライバーがセクターのアトミック性を提供する場合は、再マップが許可されます。 ファイル システム (またはリクエスター) は、永続メモリ デバイス ドライバーがセクターのアトミック性を提供することを好みます。 フラグが設定されている場合、永続メモリ ドライバーは、LBA に対応する物理アドレスを再マップしないでください。 それがセクターの原子性を提供できないことを意味する場合は、そのようにしてください。 ただし、再マッピングがない限り、ドライバーはセクターの原子性を提供することを歓迎するだけではありません。

Control

ドライバーは、このメンバーを調べて、SL_PENDING_RETURNEDで設定されているかどうかを確認し、CompletionRoutine が呼び出される条件を判断できます。 ドライバーには、このメンバーへの読み取り専用アクセス権があります。 ドライバーは、IoSetCompletionRoutine 呼び出すか、IoSetCompletionRoutineEx を してこれらの条件を指定します。

Parameters

MajorFunction および MinorFunction に含まれるメジャーおよびマイナー IRP 関数のコード値に依存する共用体。 次の表に、パラメーター 共用体の個々のメンバーを使用する IRP を示します。

メンバー名 このメンバーを使用する IRP
の作成 IRP_MJ_CREATE
読み取り IRP_MJ_READ
書き込み IRP_MJ_WRITE
QueryFile IRP_MJ_QUERY_INFORMATION
SetFile の IRP_MJ_SET_INFORMATION
QueryVolume IRP_MJ_QUERY_VOLUME_INFORMATION
DeviceIoControl の IRP_MJ_DEVICE_CONTROLIRP_MJ_INTERNAL_DEVICE_CONTROL
MountVolume IRP_MN_MOUNT_VOLUME
VerifyVolume の IRP_MN_VERIFY_VOLUME
scsi の IRP_MJ_INTERNAL_DEVICE_CONTROL (SCSI)
QueryDeviceRelations IRP_MN_QUERY_DEVICE_RELATIONS
QueryInterface IRP_MN_QUERY_INTERFACE
DeviceCapabilities IRP_MN_QUERY_CAPABILITIES
FilterResourceRequirements IRP_MN_FILTER_RESOURCE_REQUIREMENTS
ReadWriteConfig の IRP_MN_READ_CONFIGIRP_MN_WRITE_CONFIG
SetLock IRP_MN_SET_LOCK
QueryId IRP_MN_QUERY_ID
QueryDeviceText の IRP_MN_QUERY_DEVICE_TEXT
UsageNotification IRP_MN_DEVICE_USAGE_NOTIFICATION
WaitWake IRP_MN_WAIT_WAKE
PowerSequence IRP_MN_POWER_SEQUENCE
電源 の IRP_MN_SET_POWERIRP_MN_QUERY_POWER
StartDevice の IRP_MN_START_DEVICE
WMI WMI マイナー IRP
その他の ドライバー固有の IRP

詳細については、「IRP の主要な関数コードを参照してください。

Parameters.Create

NtCreateFileのシステム サービス パラメーター。

Parameters.Create.SecurityContext

Parameters.Create.Options

Parameters.Create.FileAttributes

Parameters.Create.ShareAccess

Parameters.Create.EaLength

Parameters.CreatePipe

NtCreateNamedPipeFileを するシステム サービス パラメーター。

Parameters.CreatePipe.SecurityContext

Parameters.CreatePipe.Options

Parameters.CreatePipe.Reserved

Parameters.CreatePipe.ShareAccess

Parameters.CreatePipe.Parameters

Parameters.CreateMailslot

NtCreateMailslotFileのシステム サービス パラメーター。

Parameters.CreateMailslot.SecurityContext

Parameters.CreateMailslot.Options

Parameters.CreateMailslot.Reserved

Parameters.CreateMailslot.ShareAccess

Parameters.CreateMailslot.Parameters

Parameters.Read

NtReadFileのシステム サービス パラメーター。

Parameters.Read.Length

Parameters.Read.Key

Parameters.Read.Flags

Parameters.Read.ByteOffset

Parameters.Write

NtWriteFileのシステム サービス パラメーター。

Parameters.Write.Length

Parameters.Write.Key

Parameters.Write.Flags

Parameters.Write.ByteOffset

Parameters.QueryDirectory

NtQueryDirectoryFileのシステム サービス パラメーター。

Parameters.QueryDirectory.Length

Parameters.QueryDirectory.FileName

Parameters.QueryDirectory.FileInformationClass

Parameters.QueryDirectory.FileIndex

Parameters.NotifyDirectory

NtNotifyChangeDirectoryFileのシステム サービス パラメーター。

Parameters.NotifyDirectory.Length

Parameters.NotifyDirectory.CompletionFilter

Parameters.NotifyDirectoryEx

NtNotifyChangeDirectoryFileExのシステム サービス パラメーター。

Parameters.NotifyDirectoryEx.Length

Parameters.NotifyDirectoryEx.CompletionFilter

Parameters.NotifyDirectoryEx.DirectoryNotifyInformationClass

Parameters.QueryFile

NtQueryInformationFileのシステム サービス パラメーター。

Parameters.QueryFile.Length

Parameters.QueryFile.FileInformationClass

Parameters.SetFile

NtSetInformationFileのシステム サービス パラメーター します。

Parameters.SetFile.Length

Parameters.SetFile.FileInformationClass

Parameters.SetFile.FileObject

Parameters.SetFile.ReplaceIfExists

Parameters.SetFile.AdvanceOnly

Parameters.SetFile.ClusterCount

Parameters.SetFile.DeleteHandle

Parameters.QueryEa

NtQueryEaFileのシステム サービス パラメーター。

Parameters.QueryEa.Length

Parameters.QueryEa.EaList

Parameters.QueryEa.EaListLength

Parameters.QueryEa.EaIndex

Parameters.SetEa

NtSetEaFileのシステム サービス パラメーター。

Parameters.SetEa.Length

Parameters.QueryVolume

NtQueryVolumeInformationFile のシステム サービス パラメーター。

Parameters.QueryVolume.Length

Parameters.QueryVolume.FsInformationClass

Parameters.SetVolume

NtSetVolumeInformationFileのシステム サービス パラメーター。

Parameters.SetVolume.Length

Parameters.SetVolume.FsInformationClass

Parameters.FileSystemControl

NtFsControlFileのシステム サービス パラメーター。

Parameters.FileSystemControl.OutputBufferLength

Parameters.FileSystemControl.InputBufferLength

Parameters.FileSystemControl.FsControlCode

Parameters.FileSystemControl.Type3InputBuffer

Parameters.LockControl

LockFile/NtUnlockFileのシステム サービス パラメーター。

Parameters.LockControl.Length

Parameters.LockControl.Key

Parameters.LockControl.ByteOffset

Parameters.DeviceIoControl

NtDeviceIoControlFileのシステム サービス パラメーター。

Parameters.DeviceIoControl.OutputBufferLength

Parameters.DeviceIoControl.InputBufferLength

Parameters.DeviceIoControl.IoControlCode

Parameters.DeviceIoControl.Type3InputBuffer

Parameters.QuerySecurity

NtQuerySecurityObjectのシステム サービス パラメーター。

Parameters.QuerySecurity.SecurityInformation

Parameters.QuerySecurity.Length

Parameters.SetSecurity

NtSetSecurityObjectのシステム サービス パラメーター。

Parameters.SetSecurity.SecurityInformation

Parameters.SetSecurity.SecurityDescriptor

Parameters.MountVolume

MountVolumeのシステム サービス パラメーター。

Parameters.MountVolume.Vpb

Parameters.MountVolume.DeviceObject

Parameters.MountVolume.OutputBufferLength

Parameters.VerifyVolume

VerifyVolumeのシステム サービス パラメーター。

Parameters.VerifyVolume.Vpb

Parameters.VerifyVolume.DeviceObject

Parameters.Scsi

内部デバイス制御を使用する Scsi のパラメーター。

Parameters.Scsi.Srb

Parameters.QueryQuota

NtQueryQuotaInformationFileのシステム サービス パラメーター。

Parameters.QueryQuota.Length

Parameters.QueryQuota.StartSid

Parameters.QueryQuota.SidList

Parameters.QueryQuota.SidListLength

Parameters.SetQuota

NtSetQuotaInformationFileのシステム サービス パラメーター。

Parameters.SetQuota.Length

Parameters.QueryDeviceRelations

IRP_MN_QUERY_DEVICE_RELATIONSのパラメーター。

Parameters.QueryDeviceRelations.Type

Parameters.QueryInterface

IRP_MN_QUERY_INTERFACEのパラメーター。

Parameters.QueryInterface.InterfaceType

Parameters.QueryInterface.Size

Parameters.QueryInterface.Version

Parameters.QueryInterface.Interface

Parameters.QueryInterface.InterfaceSpecificData

Parameters.DeviceCapabilities

IRP_MN_QUERY_CAPABILITIESのパラメーター。

Parameters.DeviceCapabilities.Capabilities

Parameters.FilterResourceRequirements

IRP_MN_FILTER_RESOURCE_REQUIREMENTSのパラメーター。

Parameters.FilterResourceRequirements.IoResourceRequirementList

Parameters.ReadWriteConfig

IRP_MN_READ_CONFIGとIRP_MN_WRITE_CONFIGのパラメーター。

Parameters.ReadWriteConfig.WhichSpace

Parameters.ReadWriteConfig.Buffer

Parameters.ReadWriteConfig.Offset

Parameters.ReadWriteConfig.Length

Parameters.SetLock

IRP_MN_SET_LOCKのパラメーター。

Parameters.SetLock.Lock

Parameters.QueryId

IRP_MN_QUERY_IDのパラメーター。

Parameters.QueryId.IdType

Parameters.QueryDeviceText

IRP_MN_QUERY_DEVICE_TEXTのパラメーター。

Parameters.QueryDeviceText.DeviceTextType

Parameters.QueryDeviceText.LocaleId

Parameters.UsageNotification

IRP_MN_DEVICE_USAGE_NOTIFICATIONのパラメーター。

Parameters.UsageNotification.InPath

Parameters.UsageNotification.Reserved[3]

Parameters.UsageNotification.Type

Parameters.WaitWake

IRP_MN_WAIT_WAKEのパラメーター。

Parameters.WaitWake.PowerState

Parameters.PowerSequence

IRP_MN_POWER_SEQUENCEのパラメーター。

Parameters.PowerSequence.PowerSequence

Parameters.Power

IRP_MN_SET_POWERとIRP_MN_QUERY_POWERのパラメーター。

Parameters.Power.SystemContext

Parameters.Power.SystemPowerStateContext

Parameters.Power.Type

Parameters.Power.State

Parameters.Power.ShutdownType

Parameters.StartDevice

StartDevice のパラメーター。

Parameters.StartDevice.AllocatedResources

Parameters.StartDevice.AllocatedResourcesTranslated

Parameters.WMI

WMI IRP のパラメーター。

Parameters.WMI.ProviderId

Parameters.WMI.DataPath

Parameters.WMI.BufferSize

Parameters.WMI.Buffer

Parameters.Others

その他のドライバー固有の操作のパラメーター。

Parameters.Others.Argument1

Parameters.Others.Argument2

Parameters.Others.Argument3

Parameters.Others.Argument4

DeviceObject

このドライバーが IRP を処理する対象の物理、論理、または仮想デバイスを表す、ドライバーによって作成された DEVICE_OBJECT 構造体へのポインター。

FileObject

DeviceObject ポインターに関連付けられているファイル オブジェクト (存在する場合) を表す FILE_OBJECT 構造体へのポインター。

CompletionRoutine

この構造体の Control フィールドのフラグに応じて呼び出される完了ルーチン。

Context

CompletionRoutine に渡されるコンテキスト パラメーターのアドレスを格納するために使用されるドライバー定義コンテキスト。

備考

IRP ごとに、ドライバー スタック内のドライバーごとに 1 つの IO_STACK_LOCATION 構造があります。 各 IRP の I/O スタックの場所のセットは、IRP 構造体に続いて、IRP に追加されます。

上位レベルのドライバーはすべて、各 IRP の次の下位ドライバーの I/O スタックの場所を設定する役割を担います。 ドライバーは、各 IRP 独自のスタック位置へのポインターを取得する IoGetCurrentIrpStackLocation を呼び出す必要があります。 上位レベルのドライバー IoGetNextIrpStackLocation を呼び出して、次の下位のドライバーのスタック位置へのポインターを取得できます。

上位レベルのドライバーは、下位レベルのドライバーに IRP を渡 IoCallDriver を呼び出す前に、スタックの場所の内容を設定する必要があります。 ドライバーが次の下位レベルのドライバーに入力 IRP を渡す場合、ディスパッチ ルーチンは IoSkipCurrentIrpStackLocation を呼び出すか、IoCopyCurrentIrpStackLocationToNext を して、次の下位ドライバーの I/O スタックの場所を設定する必要があります。

IoCallDriver に対する上位レベルのドライバーの呼び出しにより、DeviceObject メンバーが、下位ドライバーの I/O スタック位置にある次の下位レベルのドライバーのターゲット デバイス オブジェクトに設定されます。 I/O マネージャーは、IoCompletion ルーチンが IRP の完了時に呼び出されたときに、各上位レベルのドライバーの IoCompletion ルーチンに独自のデバイス オブジェクトへのポインターを渡します。

上位レベルのドライバーが独自の要求を行うために IRP を割り当てる場合、そのドライバーがそれ自体のスタックの場所を割り当てず、新しく割り当てられた IRP の独自のスタック位置に DeviceObject ポインターを設定しない場合、その IoCompletion ルーチンには、NULLDeviceObject ポインターが渡されます。

場合によっては、大容量記憶装置デバイス ドライバーに階層化された上位レベルのドライバーが、基になるデバイス ドライバーの大きな転送要求を分割する役割を担います。 特に、SCSI クラス ドライバーは、Parameters.Read.LengthParameters.Write.Lengthを確認し、要求された転送のサイズが基になる HBA の転送機能を超えているかどうかを判断し、その場合は、元の IRP を満たすために、元の要求の を部分的な転送のシーケンスに分割する必要があります。

必要条件

要件 価値
ヘッダー wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)

関連項目

IO_STATUS_BLOCK

IRP

IoCallDriver の

IoCopyCurrentIrpStackLocationToNext

IoGetCurrentIrpStackLocation

IoGetNextIrpStackLocation の

IoSetCompletionRoutine

IoSetNextIrpStackLocation の

IoSkipCurrentIrpStackLocation