Link to home
Start Free TrialLog in
Avatar of alice_2003
alice_2003

asked on

WMI SDK for windows XP

I would like to download WMI SDK to WIndows XP. However, WDI SDK is only available to windows 2000 and early. Microsoft .NET has some WMI SDK facility.

If I do not want to use .NET, is there any workaround for me to have WMI SDK functions? To be more specific, I can not find "wbemcli.h" in Microsoft Visual C++ 6.0 and Microsoft SDK. It is in WMI SDK for windows which I can not download for XP. How can I get it for Windows XP?

Thanks.

Alice
Avatar of CrazyOne
CrazyOne
Flag of United States of America image

Well according to this the link .NET also required in Win2000 also

https://qmedia.e-storefront.com/showcontent.asp?contentname=PlatformSDKHome
Microsoft Windows .NET Server RC1, Microsoft Windows XP, Microsoft Windows 2000 SP2, or Microsoft Windows NT 4.0 SP6.
Well maybe not that statement may have be an "or" for each item.
ASKER CERTIFIED SOLUTION
Avatar of CrazyOne
CrazyOne
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of alice_2003
alice_2003

ASKER

I have downloaded the WMI SDK. Now my program compiled and is working. However, there is still one issue with it:

I am implementing a NT service which calls an executable (cm.exe). Inside cm.exe, it creates another process (rec.exe). When I stop the service from Service Control Manager(SCM), cm.exe stops. I can manually end the process rec.exe from SCM in windows XP (it is under system account). However, in Windows 2000, it can not be stopped. I have to reboot to stop rec.exe.

I want to change my program such that when cm.exe is killed, its created process rec.exe is stopped as well. I used the following functions in my program. But rec.exe is not stopped when cm.exe is stopped. Any other way? Thanks.  --A.

HANDLE pid;
  void (signal (WM_CHAR,endprog));
  void (signal (WM_QUIT,endprog));
  void (signal (SIGTERM,endprog));
  void (signal (SIGABRT,endprog));
  void (signal (SIGSEGV,endprog));

void endprog (int signal_num)
{
      printf("Got signal %d\n",signal_num);
      if (pid) {
            /* Shut down rec.exe process */
            TerminateProcess(pid, 0);  
            pid = 0;
      }
}