windows - IGlobalInterfaceTable :: RegisterInterfaceInGlobal returnerer nul cookie

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at ompakke en proprietær app, der består af flere biblioteker, COM-grænseflader og en COM-automatiseringsserver.


Min fjernbetjening fungerer ikke.


Ved hjælp af funktionskaldsovervågningen (RohitLab API monitor) har jeg etableret et opkald til
IGlobalInterfaceTable :: RegisterInterfaceInGlobal returnerer en nulværdi for cookien i den strippede version; mens den er korrekt installeret, returnerer den altid 256.


Dokumentationen siger, at 'Værdien af ​​en ugyldig cookie er 0.' [1]


Det er meget interessant, men applikationen ignorerer nulværdien og bruger 256 i stedet for (altid?) Til IGlobalInterfaceTable :: GetInterfaceFromGlobal, og virker ikke senere, fordi den forsøger at forbinde NULL-pointeren, der returneres til grænsefladen til andre COM objekter.


Det kolliderer ikke, men ville ikke arbejde som forventet.


Spørgsmål:
Hvorfor ville RegisterInterfaceInGlobal returnere en nulværdi? Den dll, der indeholder type bibliotek til denne grænseflade, er registreret ved hjælp af regsvr32. Btw, det ser ud til at indlæse en anden dll, som også er et COM-bibliotek, men uden et typebibliotek i det.

Bedste reference