yes,i used the single step each line debugger
Code:
 pSvc->ExecQuery
return S_OK indeed,

and

Code:
 pEnumerator
is not null, but i don't know what value it should be,

Code:
 HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1,

&pclsObj, &uReturn);
if(0 == uReturn)

{

break;

}
after the call,uReturn returns 0 all the time,and "break" the "while" every time.
i don't know why uReturn always return 0.