Problem mit Pointern P!=0 in atlcomcli.h
-
Moin,
ich weiß nicht ob dies der richtige Bereich hier ist.
Das Projekt lässt sich ohne Problem als *.dll compilieren.
Sobald aber u.g Funktion aufgerufen wird, erhalte ich eine Debug Assertion.
Dort wird folgendes angemeckert:p!=0
in der atlcomcli.h.
Eine der folgenden Zeilen ist mit dieser Fehlermeldung verknüpft:bool operator!() const throw() { return (p == NULL); } bool operator<(_In_opt_ T* pT) const throw() { return p < pT; } bool operator!=(_In_opt_ T* pT) const { return !operator==(pT); } bool operator==(_In_opt_ T* pT) const throw() { return p == pT; }
Der Fehler wird erzeugt sobald ich "m_spIFWXFirewall->CreateConstBuffer.." aufrufe. Siehe unten.
HRESULT CMKSDataFilter::Send_403() { HRESULT hr; //Create IFWXIOBuffer to send to client CComPtr<IFWXIOBuffer> cbuffer_403; CComPtr<IFWXFirewall> m_spIFWXFirewall; char buffer_403 []= "HTTP/1.1 403 Forbidden..Server: Apache-Coyote/1.1..X-Powered-By: Servlet 2.4; JBoss-@implementation.version@/Tomcat-5.5..Content-Type: text/html;charset=utf-8...."; //Fill buffer DBGTRACE("\n Create Buffer\n"); hr = m_spIFWXFirewall->CreateConstBuffer((PBYTE)buffer_403, strlen(buffer_403), &cbuffer_403); if (FAILED(hr)) return hr; .......}
Der Vollständigkeits halber hier die Definition von CreateConstBuffer:
virtual HRESULT STDMETHODCALLTYPE CreateConstBuffer( /* [in] */ BYTE *pBuffer, /* [in] */ DWORD dwBufferLength, /* [out] */ IFWXIOBuffer **pIOBuffer) = 0;
Hoffe einer weiß Rat!
Gruß
Dolphon
-
Du hast einen Zeiger, der auf nichts zeigt.
Entwedermusst Du das Objekt erzeugen, oder Dir den Zeiger holen, wenn das Objekt bereits existiert.Schau Dir mal CreateInstance an... irgendwo fehlt hier was bei Dir!
Ansnsten sind das die weiteren Grundlagen für COM, die Du Dir aneignen solltest.