IDebugProperty3::GetStringChars
Recupera a seqüência associada a essa propriedade e as armazena em um buffer fornecido pelo usuário.
HRESULT GetStringChars(
ULONG buflen,
WCHAR* rgString,
ULONG* pceltFetched
);
int GetStringChars(
uint buflen,
out string rgString,
out uint pceltFetched
);
Parâmetros
buflen
[in] Número máximo de caracteres pode conter o buffer fornecido pelo usuário.rgString
[out] Retorna a seqüência de caracteres.[Apenas C++], rgString é um ponteiro para um buffer que recebe os caracteres Unicode da seqüência de caracteres. Esse buffer deve ser pelo menos buflen (não em bytes) de caracteres de tamanho.
pceltFetched
[out] Onde o número de caracteres realmente armazenados no buffer é retornado. (Can be NULL in C++.)
Valor de retorno
Se bem-sucedida, retorna S_OK; Caso contrário, retorna um código de erro.
Comentários
No C++, é preciso ter cuidado para garantir que o buffer é pelo menos buflen caracteres Unicode. Observe que um caractere Unicode é de 2 bytes de comprimento.
Dica
No C++, a seqüência de caracteres retornada não inclui um caractere nulo de terminação.Se especificado, pceltFetched especificará o número de caracteres na seqüência de caracteres.
Exemplo
[cpp]
CStringW RetrievePropertyString(IDebugProperty2 *pPropInfo)
{
CStringW returnString = L"";
CComQIPtr<IDebugProperty3> pProp3 = pPropInfo->pProperty;
If (pProp3 != NULL) {
ULONG dwStrLen = 0;
HRESULT hr;
hr = pProp3->GetStringCharLength(&dwStrLen);
if (SUCCEEDED(hr) && dwStrLen > 0) {
ULONG dwRead;
CStrBufW buf(returnString,dwStrLen,CStrBuf::SET_LENGTH);
hr = pProp3->GetStringChars(dwStrLen,
reinterpret_cast<WCHAR*>(static_cast<CStringW::PXSTR>(buf)),
&dwRead);
}
}
return(returnString);
}