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 |