2 * Win32_Process methods implementation
4 * Copyright 2013 Hans Leidekker for CodeWeavers
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
29 #include "wine/debug.h"
30 #include "wbemprox_private.h"
32 WINE_DEFAULT_DEBUG_CHANNEL(wbemprox
);
34 static HRESULT
get_owner( VARIANT
*user
, VARIANT
*domain
, VARIANT
*retval
)
40 GetUserNameW( NULL
, &len
);
41 if (GetLastError() != ERROR_INSUFFICIENT_BUFFER
) goto done
;
42 if (!(V_BSTR( user
) = SysAllocStringLen( NULL
, len
- 1 ))) goto done
;
43 if (!GetUserNameW( V_BSTR( user
), &len
)) goto done
;
44 V_VT( user
) = VT_BSTR
;
47 GetComputerNameW( NULL
, &len
);
48 if (GetLastError() != ERROR_BUFFER_OVERFLOW
) goto done
;
49 if (!(V_BSTR( domain
) = SysAllocStringLen( NULL
, len
- 1 ))) goto done
;
50 if (!GetComputerNameW( V_BSTR( domain
), &len
)) goto done
;
51 V_VT( domain
) = VT_BSTR
;
59 VariantClear( domain
);
61 set_variant( VT_UI4
, error
, NULL
, retval
);
65 HRESULT
process_get_owner( IWbemClassObject
*obj
, IWbemClassObject
*in
, IWbemClassObject
**out
)
67 VARIANT user
, domain
, retval
;
68 IWbemClassObject
*sig
, *out_params
= NULL
;
71 TRACE("%p, %p, %p\n", obj
, in
, out
);
73 hr
= create_signature( class_processW
, method_getownerW
, PARAM_OUT
, &sig
);
74 if (hr
!= S_OK
) return hr
;
78 hr
= IWbemClassObject_SpawnInstance( sig
, 0, &out_params
);
81 IWbemClassObject_Release( sig
);
86 VariantInit( &domain
);
87 hr
= get_owner( &user
, &domain
, &retval
);
88 if (hr
!= S_OK
) goto done
;
91 if (!V_UI4( &retval
))
93 hr
= IWbemClassObject_Put( out_params
, param_userW
, 0, &user
, CIM_STRING
);
94 if (hr
!= S_OK
) goto done
;
95 hr
= IWbemClassObject_Put( out_params
, param_domainW
, 0, &domain
, CIM_STRING
);
96 if (hr
!= S_OK
) goto done
;
98 hr
= IWbemClassObject_Put( out_params
, param_returnvalueW
, 0, &retval
, CIM_UINT32
);
102 VariantClear( &user
);
103 VariantClear( &domain
);
104 IWbemClassObject_Release( sig
);
105 if (hr
== S_OK
&& out
)
108 IWbemClassObject_AddRef( out_params
);
110 if (out_params
) IWbemClassObject_Release( out_params
);