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 |