Compartir a través de


Función IsBadStringPtrA (winbase.h)

Comprueba que el proceso de llamada tiene acceso de lectura al intervalo de memoria especificado.

Importante Esta función está obsoleta y no debe usarse. A pesar de su nombre, no garantiza que el puntero sea válido o que la memoria a la que apunta sea segura. Para obtener más información, vea Comentarios en esta página.
 

Sintaxis

BOOL IsBadStringPtrA(
  [in] LPCSTR   lpsz,
  [in] UINT_PTR ucchMax
);

Parámetros

[in] lpsz

Puntero a una cadena terminada en null, unicode o ASCII.

[in] ucchMax

Tamaño máximo de la cadena, en TCHAR. La función comprueba el acceso de lectura en todos los caracteres hasta el carácter nulo de terminación de la cadena o hasta el número de caracteres especificados por este parámetro, lo que sea menor. Si este parámetro es cero, el valor devuelto es cero.

Valor devuelto

Si el proceso de llamada tiene acceso de lectura a todos los caracteres hasta el carácter nulo de terminación de la cadena o hasta el número de caracteres especificados por ucchMax, el valor devuelto es cero.

Si el proceso de llamada no tiene acceso de lectura a todos los caracteres hasta el carácter nulo de terminación de la cadena o hasta el número de caracteres especificados por ucchMax, el valor devuelto es distinto de cero.

Si la aplicación se compila como una versión de depuración y el proceso no tiene acceso de lectura a todo el intervalo de memoria especificado, la función provoca una aserción y se divide en el depurador. Dejando el depurador, la función continúa como de costumbre y devuelve un valor distinto de cero Este comportamiento es por diseño, como ayuda de depuración.

Comentarios

Esta función se usa normalmente cuando se trabaja con punteros devueltos desde bibliotecas de terceros, donde no se puede determinar el comportamiento de administración de memoria en el archivo DLL de terceros.

Se espera que los subprocesos de un proceso colaboren de tal manera que uno no libere memoria que el otro necesite. El uso de esta función no niega la necesidad de hacerlo. Si esto no se hace, la aplicación puede producir un error de forma impredecible.

La desreferenciación de punteros potencialmente no válidos puede deshabilitar la expansión de la pila en otros subprocesos. Un subproceso que agota su pila, cuando se ha deshabilitado la expansión de la pila, da como resultado la finalización inmediata del proceso primario, sin ninguna ventana de error emergente ni información de diagnóstico.

Si el proceso de llamada tiene acceso de lectura a algunos, pero no todos, del intervalo de memoria especificado, el valor devuelto es distinto de cero.

En un entorno de multitarea preferente, es posible que algún otro subproceso cambie el acceso del proceso a la memoria que se está probando. Incluso cuando la función indica que el proceso tiene acceso de lectura a la memoria especificada, debe usar el control de excepciones estructurado al intentar acceder a la memoria. El uso del control de excepciones estructurado permite al sistema notificar al proceso si se produce una excepción de infracción de acceso, lo que proporciona al proceso la oportunidad de controlar la excepción.

Nota

El encabezado winbase.h define IsBadStringPtr como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winbase.h (incluya Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

IsBadCodePtr

IsBadReadPtr

IsBadWritePtr