我有以下Win32 ATL代码:
CComVariant result;
DWORD dwFileSize = GetFileSize(hFile, NULL);
LPVOID lpBuffer = HeapAlloc(hHeap, NULL, dwFileSize + 1);
ReadFile(hFile, lpBuffer, dwFileSize, &bytesReaded, NULL)
现在我需要将lpBuffer的值放到结果变量中。我该怎么办?
答案 0 :(得分:2)
void *指针不是变体的允许数据类型。最接近的自然匹配是一个字节数组。您可以使用CComSafeArray类包装器为元素类型VT_U1创建一个,CComVariant(SAFEARRAY *)构造函数来创建变体。您可能希望直接调用SafeArrayCreateDiscriptor和SafeArrayAllocData,以避免必须复制缓冲区。只需直接读入已分配的数据缓冲区即可。