Método CHString::GetBufferSetLength (chstring.h)
[La clase CHString forma parte del marco del proveedor de WMI que ahora se considera en estado final y no habrá más desarrollo, mejoras ni actualizaciones disponibles para problemas no relacionados con la seguridad que afecten a estas bibliotecas. Las API de MI deben usarse para todo el desarrollo nuevo.]
El método GetBufferSetLength devuelve un puntero al búfer de caracteres interno para el objeto CHString , truncando o aumentando su longitud si es necesario para coincidir exactamente con la longitud especificada en nNewLength.
Sintaxis
LPWSTR throw(CHeap_Exception) GetBufferSetLength(
int nNewLength
);
Parámetros
nNewLength
Tamaño exacto del búfer de caracteres CHString , medido en caracteres.
Valor devuelto
Devuelve un puntero LPWSTR al búfer de caracteres (terminado en NULL) del objeto.
Comentarios
El puntero LPWSTR devuelto, que no es const, permite la modificación directa del contenido de CHString .
Si usa el puntero devuelto por GetBuffer para cambiar el contenido de la cadena, debe llamar a ReleaseBuffer antes de usar cualquier otro método CHString .
Después de una llamada a ReleaseBuffer, es posible que la dirección devuelta por GetBufferSetLength no sea válida porque las operaciones chString adicionales pueden hacer que el búfer CHString se vuelva a asignar. Si no cambia la longitud de la cadena CHString , el búfer no se reasigna. La memoria del búfer se libera automáticamente cuando se destruye el objeto CHString .
Tenga en cuenta que si realiza un seguimiento de la longitud de la cadena usted mismo, no debe anexar el carácter NULL de terminación. Sin embargo, debe especificar la longitud final de la cadena al liberar el búfer con ReleaseBuffer. Si anexa un carácter NULL de terminación al llamar a ReleaseBuffer, debe pasar –1 (valor predeterminado) para la longitud. El método ReleaseBuffer llama a la función wcslen en el búfer para determinar su longitud.
Ejemplos
En el ejemplo de código siguiente se muestra el uso de CHString::GetBufferSetLength.
CHString str;
LPWSTR pstr = str.GetBufferSetLength(3);
pstr[0] = 'I';
pstr[1] = 'c';
pstr[2] = 'e';
// No need for trailing zero or call to ReleaseBuffer()
// because GetBufferSetLength() set it for you.
str += " hockey is best!";
printf( "str: %S\n", (LPCWSTR)str );
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista |
Servidor mínimo compatible | Windows Server 2008 |
Plataforma de destino | Windows |
Encabezado | chstring.h (incluya FwCommon.h) |
Library | FrameDyn.lib |
Archivo DLL | FrameDynOS.dll; FrameDyn.dll |