将LPVOID转换为CComVariant

Convert LPVOID to CComVariant

本文关键字:CComVariant 转换 LPVOID      更新时间:2023-10-16

我有以下Win32 ATL代码:

CComVariant result;
DWORD dwFileSize = GetFileSize(hFile, NULL);
LPVOID lpBuffer = HeapAlloc(hHeap, NULL, dwFileSize + 1);
ReadFile(hFile, lpBuffer, dwFileSize, &bytesReaded, NULL)

现在我需要将lpBuffer的值放在结果变量中。我该怎么做?

变量不允许使用void*指针。最接近的自然匹配是一个字节数组。您可以使用CComSafeArray类包装器为元素类型VT_U1创建一个,CComVariant(SAFEARRAY*)构造函数用于创建变体。您可能需要直接调用SafeArrayCreateDiscriptor和SafeArrayAllocData,这样就可以避免复制缓冲区。只需直接读取分配的数据缓冲区。