Partager via


FSCTL_QUERY_ALLOCATED_RANGES IOCTL (ntifs.h)

FSCTL_QUERY_ALLOCATED_RANGES demande une analyse d’un fichier ou d’un autre flux de recherche des plages d’octets pouvant contenir des données non nulles, puis retourne des informations sur ces plages. Seuls les fichiers partiellement alloués peuvent avoir des plages nulles connues du système d’exploitation. Pour les autres fichiers, la mémoire tampon de sortie ne contient qu’une seule plage qui contient le point de départ et la longueur demandée.

Code principal

FSCTL_QUERY_ALLOCATED_RANGES

Mémoire tampon d’entrée

Pointeur vers une structure FILE_ALLOCATED_RANGE_BUFFER qui indique la plage à interroger pour l’allocation.

Longueur de la mémoire tampon d’entrée

Taille de la structure FILE_ALLOCATED_RANGE_BUFFER qui InputBuffer pointe vers, en octets.

Mémoire tampon de sortie

Pointeur vers un tableau de zéro ou plus FILE_ALLOCATED_RANGE_BUFFER éléments de données dans lesquels les résultats de la requête sont retournés. Pour plus d’informations, voir ci-dessous.

Longueur de la mémoire tampon de sortie

Taille de la mémoire tampon qui OutputBuffer pointe vers, en octets.

Mémoire tampon d’entrée/sortie

n/a

Longueur de la mémoire tampon d’entrée/sortie

n/a

Bloc d’état

Réservé à l’utilisation du système.

Remarques

Pour effectuer cette opération, appelez FltFsControlFile ou ZwFsControlFile avec les paramètres suivants.

Paramètre Description
instance [in] Pour FltFsControlFile uniquement. Pointeur d’instance opaque pour l’appelant. Ce paramètre est obligatoire et ne peut pas être NULL.
FileObject [in] Pour FltFsControlFile uniquement. Pointeur d’objet de fichier pour le fichier ou le répertoire qui est la cible de cette requête. Ce paramètre est obligatoire et ne peut pas être NULL.
FileHandle [in] Pour ZwFsControlFile uniquement. Handle de fichier du fichier ou du répertoire qui est la cible de cette requête. Ce paramètre est obligatoire et ne peut pas être NULL.
IoStatusBlock [out] Pour ZwFsControlFile uniquement. Pointeur vers une structure IO_STATUS_BLOCK qui contient l’état final de la requête.
FsControlCode [in] Défini sur FSCTL_QUERY_ALLOCATED_RANGES.
InputBuffer [in] Pointeur vers une structure FILE_ALLOCATED_RANGE_BUFFER qui indique la plage à interroger pour l’allocation.
InputBufferLength [in] Taille de la mémoire tampon qui InputBuffer pointe vers, en octets.
OutputBuffer [out] Pointeur vers un tableau de zéro ou plus FILE_ALLOCATED_RANGE_BUFFER éléments de données dans lesquels les résultats de la requête sont retournés. Pour plus d’informations, voir ci-dessous.
OutputBufferLength [out] Taille de la mémoire tampon qui OutputBuffer pointe vers, en octets.
LengthReturned [out] Pointeur vers une variable allouée par l’appelant qui reçoit la taille en octets des informations retournées dans la mémoire tampon à OutputBuffer.

FSCTL_QUERY_ALLOCATED_RANGES retourne un tableau de zéro ou plus FILE_ALLOCATED_RANGE_BUFFER éléments de données dans la mémoire tampon vers lequel OutputBuffer pointe. Le nombre d’éléments FILE_ALLOCATED_RANGE_BUFFER retournés est calculé en divisant la valeur retournée dans LengthReturned par sizeof(FILE_ALLOCATED_RANGE_BUFFER). Les plages retournées doivent croiser la plage spécifiée dans InputBuffer. Zéro FILE_ALLOCATED_RANGE_BUFFER éléments de données sont retournés lorsque le fichier n’a pas de plages allouées.

Valeurs de retour

FSCTL_QUERY_ALLOCATED_RANGES retourne STATUS_SUCCESS une fois l’achèvement réussi ; sinon, elle retourne un code d’erreur. Les codes d’erreur courants suivent.

Code d’erreur Signification
STATUS_INVALID_PARAMETER Un paramètre n’est pas valide. Par exemple : le handle n’est pas dans un fichier ; la taille de InputBuffer est inférieure à la taille d’une structure de FILE_ALLOCATED_RANGE_BUFFER ; FileOffset est inférieur à zéro ; longueur est inférieure à zéro ; ou FileOffset plus longueur est supérieure à 0x7FFFFFFFFFFFFFFF.
STATUS_INVALID_USER_BUFFER La mémoire tampon d’entrée ou la mémoire tampon de sortie n’est pas alignée sur une limite de 4 octets.
STATUS_BUFFER_TOO_SMALL La mémoire tampon de sortie est trop petite pour contenir une structure FILE_ALLOCATED_RANGE_BUFFER.
STATUS_BUFFER_OVERFLOW La mémoire tampon de sortie est trop petite pour contenir le nombre requis de structures FILE_ALLOCATED_RANGE_BUFFER.

Exigences

Exigence Valeur
client minimum pris en charge Windows 2000
d’en-tête ntifs.h

Voir aussi

FILE_ALLOCATED_RANGE_BUFFER

FltFsControlFile

ZwFsControlFile