IDebugProperty3::GetStringChars

检索与此属性关联的字符串,并将其存储在用户提供的缓冲区中。

语法

int GetStringChars(
    uint       buflen,
    out string rgString,
    out uint   pceltFetched
);

参数

buflen
[in]用户提供的缓冲区可以容纳的最大字符数。

rgString
[out]返回字符串。

[仅限 C++] rgString 是指向接收字符串 Unicode 字符的缓冲区的指针。 此缓冲区的大小必须至少 buflen 为字符(而不是字节)。

pceltFetched
[out]返回缓冲区中实际存储的字符数。 (可以 NULL 位于 C++中)。

返回值

如果成功,则返回 S_OK;否则,返回错误代码。

备注

在 C++ 中,必须注意确保缓冲区长度至少 buflen 为 Unicode 字符。 请注意,Unicode 字符长度为 2 字节。

注意

在 C++ 中,返回的字符串不包括终止 null 字符。 如果给定, pceltFetched 将指定字符串中的字符数。

示例

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);
}

另请参阅