PC Review Forums Newsgroups Windows XP Windows XP WMI identifier not found error, undeclared identifier

Reply

identifier not found error, undeclared identifier

 
Thread Tools Rate Thread
Old 25-02-2007, 11:28 PM   #1
aarthi28@gmail.com
Guest
 
Posts: n/a
Default identifier not found error, undeclared identifier


Hi,
I have this code that I am trying to compile, but I am getting the
following errors

'CoInitializeSecurity': identifier not found
'EOAC_NONE' : undeclared identifier

I have pasted the code below

// Using_WMI1.cpp : Defines the entry point for the console
application.
//

#include "stdafx.h"
#include "wbemidl.h"
#include <comdef.h>


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif



void OnButtonGetinfo()
{
// TODO: Add your control notification handler code here
CoInitialize(NULL);


//Security needs to be initialized in XP first and this was the major
problem
//why it was not working in XP.

if(CoInitializeSecurity( NULL,
-1,
NULL,
NULL,
RPC_C_AUTHN_LEVEL_PKT,
RPC_C_IMP_LEVEL_IMPERSONATE,
NULL,
EOAC_NONE,
0)
!= S_OK)
return;

IWbemLocator * pIWbemLocator = NULL;
IWbemServices * pWbemServices = NULL;
IEnumWbemClassObject * pEnumObject = NULL;

BSTR bstrNamespace = (L"root\\cimv2");


if(CoCreateInstance (
CLSID_WbemAdministrativeLocator,
NULL ,
CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER ,
IID_IUnknown ,
( void ** ) & pIWbemLocator
) != S_OK)
return;

if(pIWbemLocator->ConnectServer(
bstrNamespace, // Namespace
NULL, // Userid
NULL, // PW
NULL, // Locale
0, // flags
NULL, // Authority
NULL, // Context
&pWbemServices
) != S_OK)
return;


HRESULT hRes;
// BSTR strQuery = (L"Select * from win32_Processor");
BSTR strQuery = (L"SELECT * FROM Win32_OperatingSystem");
// BSTR strQuery = (L"SELECT Name, ProcessId, Caption, ExecutablePath"
FROM Win32_Process");

// BSTR strQuery = (L"SELECT * FROM Win32_Process");

BSTR strQL = (L"WQL");
hRes = pWbemServices-
>ExecQuery(strQL,strQuery,WBEM_FLAG_RETURN_IMMEDIATELY,NULL,&pEnumObject);


if(hRes != S_OK)
{
printf("Could not execute Query");
return;
}

ULONG uCount = 1, uReturned;
IWbemClassObject * pClassObject = NULL;

hRes = pEnumObject->Reset();

if(hRes != S_OK)
{
printf("Could not Enumerate");
return;
}

hRes = pEnumObject->Next(WBEM_INFINITE,uCount, &pClassObject,
&uReturned);
if(hRes != S_OK)
{
printf("Could not Enumerate");
return;
}


VARIANT v1;
BSTR strClassProp = SysAllocString(L"NumberOfProcesses");
hRes = pClassObject->Get(strClassProp, 0, &v1, 0, 0);

if(hRes != S_OK)
{
printf("Could not Get Value");
return;
}

SysFreeString(strClassProp);

_bstr_t bstrPath = &v1; //Just to convert BSTR to ANSI
char* strPath=(char*)bstrPath;


if (SUCCEEDED(hRes))
printf(strPath);
else
printf("Error in getting object");

VariantClear( &v1 );


pIWbemLocator->Release();
pWbemServices->Release();
pEnumObject->Release();
pClassObject->Release();
CoUninitialize();

}
int _tmain(int argc, _TCHAR* argv[])
{
OnButtonGetinfo();
return 0;
}

Any help I can get will be appreciated. Thanks

  Reply With Quote
Old 25-02-2007, 11:34 PM   #2
Ian Collins
Guest
 
Posts: n/a
Default Re: identifier not found error, undeclared identifier

aarthi28@gmail.com wrote:
> Hi,
> I have this code that I am trying to compile, but I am getting the
> following errors
>
> 'CoInitializeSecurity': identifier not found
> 'EOAC_NONE' : undeclared identifier
>
> I have pasted the code below
>
> // Using_WMI1.cpp : Defines the entry point for the console
> application.
> //
>

This is a little off topic on comp.lang.c++.

--
Ian Collins.
  Reply With Quote
Old 26-02-2007, 12:37 AM   #3
Alf P. Steinbach
Guest
 
Posts: n/a
Default Re: identifier not found error, undeclared identifier

* aarthi28@gmail.com:
> Hi,


Hi.

PLEASE DON'T CROSSPOST TO ENVIRONMENT-SPECIFIC GROUPS AND CLC++.

Follow-ups set for pure C++ responses.


> I have this code that I am trying to compile, but I am getting the
> following errors
>
> 'CoInitializeSecurity': identifier not found


This means you haven't declared that identifier, most probably you've
forgotten to include some header.


> 'EOAC_NONE' : undeclared identifier


Ditto.


> I have pasted the code below
>
> // Using_WMI1.cpp : Defines the entry point for the console
> application.
> //
>
> #include "stdafx.h"
> #include "wbemidl.h"
> #include <comdef.h>


None of these are standard C++ headers. Most probably the intention is
that "stdafx.h" should drag in the headers you're missing. Update that
file to include the relevant headers (it's also a good idea to turn off
precompiled header support for your project -- the vendor-specific
variant you're using confuses novices endlessly, allows incorrect code
to compile, and sometimes means correct code doesn't compile).


> #ifdef _DEBUG
> #define new DEBUG_NEW


Redefining a C++ keyword means your code has undefined behavior if it
uses anything from the standard library. And since it apparently uses
'new'...


> #undef THIS_FILE
> static char THIS_FILE[] = __FILE__;
> #endif
>
>
>
> void OnButtonGetinfo()
> {
> // TODO: Add your control notification handler code here
> CoInitialize(NULL);


Although environment-specific, this is a library initialization call.
It's generally unsafe to initialize libraries later than the start of
'main'. In particular, experience with this library is that late
initialization is extremely unsafe -- don't do it.


[snip]

> int _tmain(int argc, _TCHAR* argv[])


This is not a standard C++ startup function.

Moreover it's braindead even for this program's intended environment.

Use standard 'main'.


> Any help I can get will be appreciated. Thanks


You're welcome.

Cheers,

- Alf

--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?
  Reply With Quote
Old 26-02-2007, 02:11 AM   #4
chris_doran@postmaster.co.uk
Guest
 
Posts: n/a
Default Re: identifier not found error, undeclared identifier

On 26 Feb, 00:28, aarth...@gmail.com wrote:
> Hi,
> I have this code that I am trying to compile, but I am getting the
> following errors
>
> 'CoInitializeSecurity': identifier not found
> 'EOAC_NONE' : undeclared identifier


A search on the VC subdirectories finds it in objidl.h, but you should

#include <objbase.h>

as is stated in the Requirements section of the MSDN description of
CoInitializeSecurity.

Chris

  Reply With Quote
Reply



Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off