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;
    

Anmelden zum Antworten