After a couple more hours fighting with UPnP, I find out that it is actually implemented in an API in Windows XP and up, that is available to both C++ and VB6... it's just not well documented (the sample VB code provided is for ASP.NET, eg, web server apps... who the heck would run a web server on Windows???)
Anyway, I'm running into yet another problem with the fact that I am still using Visual Studio 6.0, circa 1998. Why? It's what I wrote VDJ with (a hybrid of Visual Basic and Visual C++, along with some good old 'C'). When they did away with VB6, they provided no migration of your code from VB6 to .NET, circa 2005. Because apparently any code that is 7 years old is no longer valid. So I've been stuck using the same, 1998 development environment unless I'm willing to completely rewrite my program - which is 15 years in the making. 15 years of working around various Windows quirks, coming up with ingenious hacks to make things work the way I need them to, and so on. 15 years of finding inventive ways to utilize new Windows features in an out-dated development environment.
I'm not about to try to rewrite it in a new language, and attempt to re-implement every little thing I've done, hoping for a bug-free and functional program...
So, my little setup works. I can't read the help files (Windows no longer supports WinHelp files as of, say, 2003) but it's all online somewhere. The compiler tools still work and most likely will for the foreseeable future. But any time I find sample code, it's always for VB.NET or C#, neither of which I have any intention of learning. The vast majority of my code is in plain-old C.
Notice, by the way, that on any other operating system, you can reliable compile and execute code written 30 years ago. They don't just go change the language every couple of years. If you had the source code to the Unix command 'ls', which has not changed in over 30 years, you could still compile it for a new platform. Microsoft has ADHD, and has to constantly change everything around, even at a low-level programmer's interface.
Luckily my environment still works well, but when it comes to implementing relatively new concepts such as UPnP, or IPv6 technology (not looking forward to having to do that), it becomes very much a hassle. Usually once I figure it out, it's done and I don't have to muck with it anymore. And I've done this time and time again, and will in the future... I just hate *this* part, where I'm stuck trying to figure out something new, and hitting all kinds of dead-ends. Once I figure it out, I comment my code very well so that if I ever do have to dig into that section again, I know what I was thinking at the time it was written. Some of my hacks look like they make no sense, unless you read the comment lines.
Just needed to rant for a minute. I figure, hey, they're my forums

In the end, I'll figure it out, and all the frustration will have been worth it. I just felt the need to Microsoft-bash and vent for a minute. Feeling better already

Gonna take a break and watch a little TV, refocus my eyes, and conquer this UPnP thing once and for all by the end of the night...