|
|
// Copyright (c) 2000-2001 Microsoft Corporation, All Rights Reserved
// Helpers.h: Prototypes for helper functions for JobObjectProv component.
#pragma once
_COM_SMARTPTR_TYPEDEF(IWbemClassObject, __uuidof(IWbemClassObject)); _COM_SMARTPTR_TYPEDEF(IWbemLocator, __uuidof(IWbemLocator)); _COM_SMARTPTR_TYPEDEF(IWbemServices, __uuidof(IWbemServices));
#define JOB_OBJECT_STATUS_OBJECT L"Win32_JobObjectStatus"
#define JOB_OBJECT_NAMESPACE L"root\\cimv2"
class SmartCloseHANDLE {
private: HANDLE m_h;
public: SmartCloseHANDLE():m_h(INVALID_HANDLE_VALUE){} SmartCloseHANDLE(HANDLE h):m_h(h){} ~SmartCloseHANDLE(){if (m_h!=INVALID_HANDLE_VALUE) CloseHandle(m_h);} HANDLE operator =(HANDLE h) {if (m_h!=INVALID_HANDLE_VALUE) CloseHandle(m_h); m_h=h; return h;} operator HANDLE() const {return m_h;} HANDLE* operator &() {if (m_h!=INVALID_HANDLE_VALUE) CloseHandle(m_h); m_h = INVALID_HANDLE_VALUE; return &m_h;} };
HRESULT CreateInst( IWbemServices *pNamespace, IWbemClassObject **pNewInst, BSTR bstrClassName, IWbemContext *pCtx);
HRESULT GetObjInstKeyVal( const BSTR ObjectPath, LPCWSTR wstrClassName, LPCWSTR wstrKeyPropName, LPWSTR wstrObjInstKeyVal, long lBufLen);
HRESULT GetJobObjectList( std::vector<_bstr_t>& rgbstrtJOList);
bool WINAPI WhackToken( LPWSTR str, LPWSTR token);
bool WINAPI StrToIdentifierAuthority( LPCWSTR str, SID_IDENTIFIER_AUTHORITY& identifierAuthority);
PSID WINAPI StrToSID(LPCWSTR wstrIncommingSid);
void StringFromSid(PSID psid, _bstr_t& strSID);
void RemoveQuotes(LPWSTR wstrObjInstKeyVal);
HRESULT CheckImpersonationLevel();
HRESULT SetStatusObject( IWbemContext* pContext, IWbemServices* pSvcs, DWORD dwError, LPCWSTR wstrErrorDescription, LPCWSTR wstrOperation, LPCWSTR wstrNamespace, IWbemClassObject** ppStatusObjOut);
IWbemClassObject* GetStatusObject( IWbemContext* pContext, IWbemServices* pSvcs);
void UndecorateJOName( LPCWSTR wstrDecoratedName, CHString& chstrUndecoratedJOName);
void DecorateJOName( LPCWSTR wstrUndecoratedName, CHString& chstrDecoratedJOName);
void UndecorateNamesInNamedJONameList( std::vector<_bstr_t>& rgNamedJOs);
HRESULT WinErrorToWBEMhResult(LONG error);
bool GetNameAndDomainFromPSID( PSID psid, CHString& chstrName, CHString& chstrDomain);
|