structure IO_STACK_LOCATION (wdm.h)
La structure IO_STACK_LOCATION définit un emplacement de pile d’E/S, qui est une entrée dans la pile d’E/S associée à chaque IRP. Chaque emplacement de pile d’E/S dans un IRP a des membres communs et des membres spécifiques au type de requête.
Syntaxe
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;
Membres
MajorFunction
Code de fonction principale IRP indiquant le type d’opération d’E/S à effectuer.
MinorFunction
Code de sous-fonction pour MajorFunction. Le gestionnaire PnP, le gestionnaire d’alimentation, les pilotes de système de fichiers et les pilotes de classe SCSI définissent ce membre pour certaines demandes.
Flags
Valeurs spécifiques au type de requête utilisées presque exclusivement par les pilotes de système de fichiers. Les pilotes de périphérique de support amovible case activée si ce membre est défini avec SL_OVERRIDE_VERIFY_VOLUME pour les demandes de lecture afin de déterminer s’il faut continuer l’opération de lecture même si les indicateurs de l’objet d’appareil sont définis avec DO_VERIFY_VOLUME. Les pilotes intermédiaires superposés sur un pilote de périphérique amovible doivent copier ce membre dans l’emplacement de pile d’E/S du pilote inférieur suivant dans toutes les demandes de IRP_MJ_READ entrantes.
Pour obtenir de la documentation sur d’autres SL_*
indicateurs pour IRP_MJ_CREATE, consultez IRP_MJ_CREATE (IFS).
Les valeurs d’indicateur possibles sont les suivantes :
Indicateur | Valeur | Description |
---|---|---|
SL_KEY_SPECIFIED | 0x01 |
Indique que contient la IO_STACK_LOCATION.Parameters.Read(OrWrite).Key copie d’un secteur donné à lire lorsque la redondance est activée. Aujourd’hui, cet indicateur est utilisé uniquement avec les opérations IRP_MJ_READ. |
SL_OVERRIDE_VERIFY_VOLUME | 0x02 |
Cet indicateur permet de déterminer s’il faut poursuivre l’opération de lecture même si les indicateurs de l’objet d’appareil sont définis avec DO_VERIFY_VOLUME. |
SL_WRITE_THROUGH | 0x04 |
Cet indicateur indique au pilote de stockage de définir les indicateurs appropriés afin que le disque contourne le cache d’écriture afin de forcer le disque à écrire sur son support de stockage persistant. Cet indicateur est spécifique à l’appareil ; tous les lecteurs de disque ne prennent pas en charge le contournement du cache de disque. |
SL_FT_SEQUENTIAL_WRITE | 0x08 |
Réservé pour le système. |
SL_FORCE_DIRECT_WRITE | 0x10 |
Cet indicateur permet aux pilotes en mode noyau d’écrire dans des zones de volume qu’ils ne peuvent normalement pas écrire en raison du blocage de l’écriture directe dans le système de fichiers et la pile des pilotes de stockage. Le blocage d’écriture directe permet d’améliorer la sécurité. Cet indicateur est vérifié à la fois au niveau de la couche de système de fichiers et de la couche de pile de stockage. Pour plus d’informations sur le blocage de l’écriture directe, consultez Blocage des opérations d’écriture directe sur des volumes et des disques. |
SL_REALTIME_STREAM | 0x20 |
Cet indicateur indique que les E/S sont destinées aux demandes de diffusion en continu en temps réel vers un pilote de classe CD-ROM. Cela indique au pilote d’effectuer des opérations DE LECTURE/ÉCRITURE à une vitesse garantie pour la diffusion en temps réel. Cet indicateur est valide uniquement avec le support optique. |
SL_PERSISTENT_MEMORY_FIXED_MAPPING | 0x20 |
Le mappage de mémoire persistant des octets de la demande d’écriture ne peut pas être modifié lors de la gestion de cette demande d’écriture. Cet indicateur est valide uniquement avec un périphérique de mémoire persistant et IRP_MJ_WRITE. |
Pour les appareils de mémoire persistants, l’une des raisons de la réappingation (modification de l’adresse physique d’un LBA donné) sur des périphériques de mémoire persistants est de fournir une atomicité efficace au niveau du secteur. Si l’indicateur n’est pas défini, le remapping est autorisé, en particulier si le pilote fournit l’atomicité de secteur. Les systèmes de fichiers (ou le demandeur) préfèrent qu’un pilote de périphérique de mémoire persistant fournisse une atomicité de secteur. Si l’indicateur est défini, un pilote de mémoire persistant ne doit pas remapcher les adresses physiques correspondant aux LBA. Si cela signifie que l’atomicité du secteur ne peut pas être fournie, ainsi soit-il. Cependant, le pilote est plus que bienvenu pour fournir l’atomicité du secteur tant qu’il n’y a pas de réapping.
Control
Les pilotes peuvent case activée ce membre pour déterminer s’il est défini avec SL_PENDING_RETURNED et dans quelles conditions le CompletionRoutine est appelé. Les pilotes ont un accès en lecture seule à ce membre. Les pilotes appellent IoSetCompletionRoutine ou IoSetCompletionRoutineEx pour spécifier ces conditions.
Parameters
Union qui dépend des valeurs de code des fonctions IRP principales et mineures contenues dans MajorFunction et MinorFunction. Le tableau suivant montre quels IRP utilisent les membres individuels de l’union Parameters .
Nom du membre | IrPs qui utilisent ce membre |
---|---|
Créer | IRP_MJ_CREATE |
Lire | IRP_MJ_READ |
Écrire | IRP_MJ_WRITE |
QueryFile | IRP_MJ_QUERY_INFORMATION |
SetFile | IRP_MJ_SET_INFORMATION |
QueryVolume | IRP_MJ_QUERY_VOLUME_INFORMATION |
DeviceIoControl | IRP_MJ_DEVICE_CONTROL et IRP_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_CONFIG et IRP_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 |
Power | IRP_MN_SET_POWER et IRP_MN_QUERY_POWER |
StartDevice | IRP_MN_START_DEVICE |
WMI | IDP secondaires WMI |
Autres | IRPs spécifiques au pilote |
Pour plus d’informations, consultez Codes de fonction principaux IRP.
Parameters.Create
Paramètres de service système pour NtCreateFile.
Parameters.Create.SecurityContext
Parameters.Create.Options
Parameters.Create.FileAttributes
Parameters.Create.ShareAccess
Parameters.Create.EaLength
Parameters.CreatePipe
Paramètres de service système pour NtCreateNamedPipeFile.
Parameters.CreatePipe.SecurityContext
Parameters.CreatePipe.Options
Parameters.CreatePipe.Reserved
Parameters.CreatePipe.ShareAccess
Parameters.CreatePipe.Parameters
Parameters.CreateMailslot
Paramètres de service système pour NtCreateMailslotFile.
Parameters.CreateMailslot.SecurityContext
Parameters.CreateMailslot.Options
Parameters.CreateMailslot.Reserved
Parameters.CreateMailslot.ShareAccess
Parameters.CreateMailslot.Parameters
Parameters.Read
Paramètres de service système pour NtReadFile.
Parameters.Read.Length
Parameters.Read.Key
Parameters.Read.Flags
Parameters.Read.ByteOffset
Parameters.Write
Paramètres de service système pour NtWriteFile.
Parameters.Write.Length
Parameters.Write.Key
Parameters.Write.Flags
Parameters.Write.ByteOffset
Parameters.QueryDirectory
Paramètres de service système pour NtQueryDirectoryFile.
Parameters.QueryDirectory.Length
Parameters.QueryDirectory.FileName
Parameters.QueryDirectory.FileInformationClass
Parameters.QueryDirectory.FileIndex
Parameters.NotifyDirectory
Paramètres de service système pour NtNotifyChangeDirectoryFile.
Parameters.NotifyDirectory.Length
Parameters.NotifyDirectory.CompletionFilter
Parameters.NotifyDirectoryEx
Paramètres de service système pour NtNotifyChangeDirectoryFileEx.
Parameters.NotifyDirectoryEx.Length
Parameters.NotifyDirectoryEx.CompletionFilter
Parameters.NotifyDirectoryEx.DirectoryNotifyInformationClass
Parameters.QueryFile
Paramètres de service système pour NtQueryInformationFile.
Parameters.QueryFile.Length
Parameters.QueryFile.FileInformationClass
Parameters.SetFile
Paramètres de service système pour NtSetInformationFile.
Parameters.SetFile.Length
Parameters.SetFile.FileInformationClass
Parameters.SetFile.FileObject
Parameters.SetFile.ReplaceIfExists
Parameters.SetFile.AdvanceOnly
Parameters.SetFile.ClusterCount
Parameters.SetFile.DeleteHandle
Parameters.QueryEa
Paramètres de service système pour NtQueryEaFile.
Parameters.QueryEa.Length
Parameters.QueryEa.EaList
Parameters.QueryEa.EaListLength
Parameters.QueryEa.EaIndex
Parameters.SetEa
Paramètres de service système pour NtSetEaFile.
Parameters.SetEa.Length
Parameters.QueryVolume
Paramètres de service système pour NtQueryVolumeInformationFile.
Parameters.QueryVolume.Length
Parameters.QueryVolume.FsInformationClass
Parameters.SetVolume
Paramètres de service système pour NtSetVolumeInformationFile.
Parameters.SetVolume.Length
Parameters.SetVolume.FsInformationClass
Parameters.FileSystemControl
Paramètres de service système pour NtFsControlFile.
Parameters.FileSystemControl.OutputBufferLength
Parameters.FileSystemControl.InputBufferLength
Parameters.FileSystemControl.FsControlCode
Parameters.FileSystemControl.Type3InputBuffer
Parameters.LockControl
Paramètres de service système pour LockFile/NtUnlockFile.
Parameters.LockControl.Length
Parameters.LockControl.Key
Parameters.LockControl.ByteOffset
Parameters.DeviceIoControl
Paramètres de service système pour NtDeviceIoControlFile.
Parameters.DeviceIoControl.OutputBufferLength
Parameters.DeviceIoControl.InputBufferLength
Parameters.DeviceIoControl.IoControlCode
Parameters.DeviceIoControl.Type3InputBuffer
Parameters.QuerySecurity
Paramètres de service système pour NtQuerySecurityObject.
Parameters.QuerySecurity.SecurityInformation
Parameters.QuerySecurity.Length
Parameters.SetSecurity
Paramètres de service système pour NtSetSecurityObject.
Parameters.SetSecurity.SecurityInformation
Parameters.SetSecurity.SecurityDescriptor
Parameters.MountVolume
Paramètres de service système pour MountVolume.
Parameters.MountVolume.Vpb
Parameters.MountVolume.DeviceObject
Parameters.MountVolume.OutputBufferLength
Parameters.VerifyVolume
Paramètres de service système pour VerifyVolume.
Parameters.VerifyVolume.Vpb
Parameters.VerifyVolume.DeviceObject
Parameters.Scsi
Paramètres pour Scsi avec contrôle d’appareil interne.
Parameters.Scsi.Srb
Parameters.QueryQuota
Paramètres de service système pour NtQueryQuotaInformationFile.
Parameters.QueryQuota.Length
Parameters.QueryQuota.StartSid
Parameters.QueryQuota.SidList
Parameters.QueryQuota.SidListLength
Parameters.SetQuota
Paramètres de service système pour NtSetQuotaInformationFile.
Parameters.SetQuota.Length
Parameters.QueryDeviceRelations
Paramètres pour IRP_MN_QUERY_DEVICE_RELATIONS.
Parameters.QueryDeviceRelations.Type
Parameters.QueryInterface
Paramètres pour IRP_MN_QUERY_INTERFACE.
Parameters.QueryInterface.InterfaceType
Parameters.QueryInterface.Size
Parameters.QueryInterface.Version
Parameters.QueryInterface.Interface
Parameters.QueryInterface.InterfaceSpecificData
Parameters.DeviceCapabilities
Paramètres pour IRP_MN_QUERY_CAPABILITIES.
Parameters.DeviceCapabilities.Capabilities
Parameters.FilterResourceRequirements
Paramètres pour IRP_MN_FILTER_RESOURCE_REQUIREMENTS.
Parameters.FilterResourceRequirements.IoResourceRequirementList
Parameters.ReadWriteConfig
Paramètres pour IRP_MN_READ_CONFIG et IRP_MN_WRITE_CONFIG.
Parameters.ReadWriteConfig.WhichSpace
Parameters.ReadWriteConfig.Buffer
Parameters.ReadWriteConfig.Offset
Parameters.ReadWriteConfig.Length
Parameters.SetLock
Paramètres pour IRP_MN_SET_LOCK.
Parameters.SetLock.Lock
Parameters.QueryId
Paramètres pour IRP_MN_QUERY_ID.
Parameters.QueryId.IdType
Parameters.QueryDeviceText
Paramètres pour IRP_MN_QUERY_DEVICE_TEXT.
Parameters.QueryDeviceText.DeviceTextType
Parameters.QueryDeviceText.LocaleId
Parameters.UsageNotification
Paramètres pour IRP_MN_DEVICE_USAGE_NOTIFICATION.
Parameters.UsageNotification.InPath
Parameters.UsageNotification.Reserved[3]
Parameters.UsageNotification.Type
Parameters.WaitWake
Paramètres pour IRP_MN_WAIT_WAKE.
Parameters.WaitWake.PowerState
Parameters.PowerSequence
Paramètre pour IRP_MN_POWER_SEQUENCE.
Parameters.PowerSequence.PowerSequence
Parameters.Power
Paramètres pour IRP_MN_SET_POWER et IRP_MN_QUERY_POWER.
Parameters.Power.SystemContext
Parameters.Power.SystemPowerStateContext
Parameters.Power.Type
Parameters.Power.State
Parameters.Power.ShutdownType
Parameters.StartDevice
Paramètres pour StartDevice.
Parameters.StartDevice.AllocatedResources
Parameters.StartDevice.AllocatedResourcesTranslated
Parameters.WMI
Paramètres pour les runtimes d’intégration WMI.
Parameters.WMI.ProviderId
Parameters.WMI.DataPath
Parameters.WMI.BufferSize
Parameters.WMI.Buffer
Parameters.Others
Paramètres pour d’autres opérations spécifiques au pilote.
Parameters.Others.Argument1
Parameters.Others.Argument2
Parameters.Others.Argument3
Parameters.Others.Argument4
DeviceObject
Pointeur vers la structure DEVICE_OBJECT créée par le pilote représentant l’appareil physique, logique ou virtuel cible pour lequel ce pilote doit gérer l’IRP.
FileObject
Pointeur vers une structure FILE_OBJECT qui représente l’objet file, le cas échéant, associé au pointeur DeviceObject .
CompletionRoutine
Routine d’achèvement appelée en fonction des indicateurs dans le champ Contrôle de cette structure.
Context
Contexte défini par le pilote utilisé pour stocker l’adresse du paramètre de contexte qui est passé à CompletionRoutine.
Remarques
Pour chaque IRP, il existe une structure IO_STACK_LOCATION pour chaque pilote dans une pile de pilotes. L’ensemble d’emplacements de pile d’E/S de chaque IRP est ajouté à l’IRP, en suivant la structure IRP .
Chaque pilote de niveau supérieur est responsable de la configuration de l’emplacement de la pile d’E/S pour le pilote inférieur suivant dans chaque IRP. Un pilote doit appeler IoGetCurrentIrpStackLocation pour obtenir un pointeur vers son propre emplacement de pile pour chaque IRP. Les pilotes de niveau supérieur peuvent appeler IoGetNextIrpStackLocation pour obtenir un pointeur vers l’emplacement de pile du pilote inférieur suivant.
Le pilote de niveau supérieur doit configurer le contenu de l’emplacement de la pile avant d’appeler IoCallDriver pour passer une IRP au pilote de niveau inférieur. Si le pilote transmet l’IRP d’entrée au pilote de niveau inférieur suivant, la routine de répartition doit appeler IoSkipCurrentIrpStackLocation ou IoCopyCurrentIrpStackLocationToNext pour configurer l’emplacement de pile d’E/S du pilote inférieur suivant.
Un appel de pilote de niveau supérieur à IoCallDriver définit le membre DeviceObject sur l’objet d’appareil cible du pilote de niveau inférieur suivant, à l’emplacement de la pile d’E/S du pilote inférieur. Le gestionnaire d’E/S transmet à la routine IoCompletion de chaque pilote de niveau supérieur un pointeur vers son propre objet d’appareil lorsque la routine IoCompletion est appelée à l’achèvement de l’IRP.
Si un pilote de niveau supérieur alloue des IRP pour effectuer ses propres requêtes, sa routine IoCompletion reçoit un pointeur DeviceObject NULL si ce pilote n’alloue pas d’emplacement de pile pour lui-même ni configure le pointeur DeviceObject dans son propre emplacement de pile de l’IRP nouvellement alloué.
Dans certains cas, un pilote de niveau supérieur superposé sur un pilote de périphérique de stockage de masse est responsable du fractionnement des demandes de transfert volumineuses pour le pilote de périphérique sous-jacent. En particulier, les pilotes de classe SCSI doivent case activée parameters.Read.Length et Parameters.Write.Length, déterminer si la taille du transfert demandé dépasse les capacités de transfert du HBA sous-jacent et, si c’est le cas, fractionner la longueur de la requête d’origine en une séquence de transferts partiels pour satisfaire l’IRP d’origine.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour