Gå til innhold

hjelp: Upnp CP leter [løst]


Anbefalte innlegg

Problemet er i et par klasser som jeg har hentet fram, den finner UPnP Control Points. (aka alle ting som støtter Upnp) Modulet finner UPnP enheter helt fint og lagrer de i en std::vector, men når jeg skal hente de opp igjen virker det som om minne er korrupt og jeg får feil. Denne koden er kun win32, men jeg velger å legge den her siden jeg tror feilen ligger i C++ koden.

 

litt om klassene:

NUPnP er klassene som styrer alt og setter i gang søket via COM objektet IID_IUPnPDeviceFinder

 

CUPnPDeviceFinderCallback er en callback klasse (doh) som funksjonene blir kjørt etter hvert som søkene før resultater

DeviceAdded er funksjonen som blir kjørt når man finner en CP.

 

Problemet:

NUPnP::FindInternettGateway klikker når den kaller på funksjoner fra tidligere lagrede CP

 

Hvordan skal jeg debugge dette??

UNICODE

#include "NUPnP.h"

NUPnP test;
test.FindDevices(TEXT("UPnP:rootdevice"));
test.FindInternettGateway();

 

ASCII

#include "NUPnP.h"

NUPnP test;
test.FindDevices("UPnP:rootdevice");
test.FindInternettGateway();

 

Takker på forhånd for all hjelp jeg kan få

 

edit: opps glemte å legge ved koden

YNet.zip

Endret av Giddion
Lenke til kommentar
Videoannonse
Annonse
  • 3 uker senere...

Gammel thread, men problemet ditt er vel at du tar aldri å AddRef'er til dine IUPnPDevice så de blir sletta utenfor din DeviceAdded func. Du må AddRef'e når du tar å lagrer en pointer til et COM objekt for senere, så ikke COM biblioteket sletter objektet når alle andre har frigjort sine referanser. Du må da også huske å Release når du tømmer din std::vector (i dtor).

Lenke til kommentar

Først vil jeg takke for at du tok det tid til å kikke på posten.

 

Og takk mange mange ganger det funker som smurt nå. :thumbup:

Jeg hadde helt gitt opp denne posten for en stund siden.

 

Jeg trodde at UPnPDeviceFinder eller/og UPnPDeviceFinderCallback hadde ansvarer for unloadingen av IUPnPDevice, så hvis jeg ventet med å release de så ville alt fungere, men tydlig vis har jeg mye å lære om COM.

 

Og takk igjen mange mange ganger.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...