Partager via


FSCTL_QUERY_ALLOCATED_RANGES IOCTL (ntifs.h)

FSCTL_QUERY_ALLOCATED_RANGES demande une analyse d’un fichier ou d’un autre flux à la recherche de plages d’octets pouvant contenir des données différentes de zéro, 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 contenant 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 vers laquelle pointe InputBuffer , 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 vers laquelle pointe OutputBuffer , 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é pour le 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 de 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 de IO_STATUS_BLOCK qui contient la status finale de la requête.
FsControlCode [in] Définissez 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 vers laquelle pointe InputBuffer , 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 vers laquelle pointe OutputBuffer , 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 sur 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 laquelle pointe OutputBuffer . 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 aucune plage allouée.

Valeurs de retour

FSCTL_QUERY_ALLOCATED_RANGES retourne STATUS_SUCCESS en cas de réussite de l’exécution ; 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 destiné à un fichier ; la taille d’InputBuffer est inférieure à la taille d’une structure FILE_ALLOCATED_RANGE_BUFFER ; FileOffset est inférieur à zéro ; La longueur est inférieure à zéro ; ou FileOffset plus Length est supérieur à 0x7FFFFFFFFFFFFFFF.
STATUS_INVALID_USER_BUFFER La mémoire tampon d’entrée ou 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 .

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000
En-tête ntifs.h

Voir aussi

FILE_ALLOCATED_RANGE_BUFFER

FltFsControlFile

ZwFsControlFile