IsBadStringPtrA, fonction (winbase.h)
Vérifie que le processus appelant dispose d’un accès en lecture à la plage de mémoire spécifiée.
Syntaxe
BOOL IsBadStringPtrA(
[in] LPCSTR lpsz,
[in] UINT_PTR ucchMax
);
Paramètres
[in] lpsz
Pointeur vers une chaîne terminée par null, Unicode ou ASCII.
[in] ucchMax
Taille maximale de la chaîne, dans TCHARs. La fonction vérifie l’accès en lecture dans tous les caractères jusqu’au caractère null de fin de la chaîne ou jusqu’au nombre de caractères spécifiés par ce paramètre, selon la valeur la plus petite. Si ce paramètre est égal à zéro, la valeur de retour est égale à zéro.
Valeur de retour
Si le processus appelant a un accès en lecture à tous les caractères jusqu’au caractère null de fin de la chaîne ou jusqu’au nombre de caractères spécifié par ucchMax, la valeur de retour est égale à zéro.
Si le processus appelant n’a pas accès en lecture à tous les caractères jusqu’au caractère null de fin de la chaîne ou au nombre de caractères spécifiés par ucchMax, la valeur de retour n’est pas nulle.
Si l’application est compilée en tant que version de débogage et que le processus n’a pas d’accès en lecture à l’ensemble de la plage de mémoire spécifiée, la fonction provoque une assertion et se décompose dans le débogueur. Laissant le débogueur, la fonction continue comme d’habitude et retourne une valeur différente de zéro Ce comportement est par conception, comme aide au débogage.
Remarques
Cette fonction est généralement utilisée lors de l’utilisation de pointeurs retournés par des bibliothèques tierces, où vous ne pouvez pas déterminer le comportement de gestion de la mémoire dans la DLL tierce.
Les threads d’un processus sont censés coopérer de telle sorte que l’un ne libère pas la mémoire dont l’autre a besoin. L’utilisation de cette fonction n’annule pas la nécessité d’effectuer cette opération. Si ce n’est pas le cas, l’application peut échouer de manière imprévisible.
La désactivation des pointeurs potentiellement non valides peut désactiver l’extension de pile dans d’autres threads. Un thread qui épuise sa pile, lorsque l’extension de pile a été désactivée, entraîne l’arrêt immédiat du processus parent, sans fenêtre d’erreur contextuelle ni informations de diagnostic.
Si le processus appelant a un accès en lecture à certains, mais pas tous, de la plage de mémoire spécifiée, la valeur de retour est différente de zéro.
Dans un environnement multitâche préemptif, il est possible que d’autres threads modifient l’accès du processus à la mémoire testée. Même lorsque la fonction indique que le processus a accès en lecture à la mémoire spécifiée, vous devez utiliser gestion structurée des exceptions lors de la tentative d’accès à la mémoire. L’utilisation de la gestion structurée des exceptions permet au système de notifier le processus si une exception de violation d’accès se produit, ce qui donne au processus la possibilité de gérer l’exception.
Note
L’en-tête winbase.h définit IsBadStringPtr comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows XP [applications de bureau uniquement] |
serveur minimum pris en charge | Windows Server 2003 [applications de bureau uniquement] |
plateforme cible | Windows |
d’en-tête | winbase.h (inclure Windows.h) |
bibliothèque | Kernel32.lib |
DLL | Kernel32.dll |