IStream über IStream aus Interfacefunktion
-
Hallo Leute,
ich habe eine COM Dll welche das Interface <<TestInterface>> implementiert mit der Funktion:
STDMETHODIMP CTest::XTestInterfaceItf::Init(IStream** TestData)
ich möcht in der Funktion einen Stream aus meiner Ressource laden und an TestData hängen.
Ich mache das folgendermaßen:
STDMETHODIMP CTest::XTestInterfaceItf::Init(IStream** TestData) { IStream* lokalData = NULL; HRESULT hr; HRSRC hrSrc = FindResource(AfxGetResourceHandle(), MAKEINTRESOURCE(IDR_XML3), _T("XML")); if(hrSrc) { DWORD dwSchemaSize = SizeofResource(AfxGetResourceHandle(), hrSrc); HGLOBAL m_hGlobal = LoadResource(AfxGetResourceHandle(), hrSrc); HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE|GMEM_DISCARDABLE, dwSchemaSize); BYTE *hPtr = (BYTE *)GlobalLock(hGlobal); BYTE *InfoBuffer = (BYTE *)LockResource(m_hGlobal); CopyMemory(hPtr, InfoBuffer, dwSchemaSize); GlobalUnlock(hGlobal); hr = CreateStreamOnHGlobal(hGlobal, TRUE, &lokalData); } TestData = &lokalData; }
Ist das so korrekt?
-
Ändere
TestData = &lokalData;
nach
*TestData = lokalData;