Función IsBadStringPtrA (winbase.h)
Comprueba que el proceso de llamada tiene acceso de lectura al intervalo de memoria especificado.
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 si hay 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 produce 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.
Observaciones
Esta función se usa normalmente al trabajar 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 cooperen 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 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 control de excepciones estructurados 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 una oportunidad para 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 neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows XP [solo aplicaciones de escritorio] |
servidor mínimo admitido | Windows Server 2003 [solo aplicaciones de escritorio] |
de la plataforma de destino de |
Windows |
encabezado de |
winbase.h (incluya Windows.h) |
biblioteca de |
Kernel32.lib |
DLL de |
Kernel32.dll |