ReactOS 0.4.16-dev-1636-g0502e33
CProfilesEnumGuid Class Reference
Inheritance diagram for CProfilesEnumGuid:
Collaboration diagram for CProfilesEnumGuid:

Public Member Functions

 CProfilesEnumGuid ()
 
virtual ~CProfilesEnumGuid ()
 
STDMETHODIMP QueryInterface (REFIID iid, LPVOID *ppvObj) override
 
 STDMETHODIMP_ (ULONG) AddRef() override
 
 STDMETHODIMP_ (ULONG) Release() override
 
STDMETHODIMP Next (_In_ ULONG celt, _Out_ GUID *rgelt, _Out_ ULONG *pceltFetched) override
 
STDMETHODIMP Skip (_In_ ULONG celt) override
 
STDMETHODIMP Reset () override
 
STDMETHODIMP Clone (_Out_ IEnumGUID **ppenum) override
 
- Public Member Functions inherited from IEnumGUID
HRESULT Next ([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] GUID *rgelt, [out] ULONG *pceltFetched)
 
HRESULT Skip ([in] ULONG celt)
 
HRESULT Reset ()
 
HRESULT Clone ([out] IEnumGUID **ppenum)
 
- Public Member Functions inherited from IUnknown
HRESULT QueryInterface ([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
 
ULONG AddRef ()
 
ULONG Release ()
 

Static Public Member Functions

static HRESULT CreateInstance (CProfilesEnumGuid **ppOut)
 

Protected Attributes

LONG m_cRefs
 
HKEY m_key
 
DWORD m_next_index
 

Additional Inherited Members

- Public Types inherited from IEnumGUID
typedef IEnumGUIDLPENUMGUID
 
- Public Types inherited from IUnknown
typedef IUnknownLPUNKNOWN
 

Detailed Description

Definition at line 167 of file inputprocessor.cpp.

Constructor & Destructor Documentation

◆ CProfilesEnumGuid()

CProfilesEnumGuid::CProfilesEnumGuid ( )

Definition at line 900 of file inputprocessor.cpp.

901 : m_cRefs(1)
902 , m_key(NULL)
903 , m_next_index(0)
904{
905}
#define NULL
Definition: types.h:112

Referenced by CreateInstance().

◆ ~CProfilesEnumGuid()

CProfilesEnumGuid::~CProfilesEnumGuid ( )
virtual

Definition at line 907 of file inputprocessor.cpp.

908{
909 TRACE("destroying %p\n", this);
911}
#define RegCloseKey(hKey)
Definition: registry.h:49
#define TRACE(s)
Definition: solgame.cpp:4

Member Function Documentation

◆ Clone()

STDMETHODIMP CProfilesEnumGuid::Clone ( _Out_ IEnumGUID **  ppenum)
override

Definition at line 998 of file inputprocessor.cpp.

999{
1000 TRACE("(%p)\n", this);
1001
1002 if (!ppenum)
1003 return E_POINTER;
1004
1005 *ppenum = NULL;
1006
1007 CProfilesEnumGuid *pEnum;
1009 if (SUCCEEDED(hr))
1010 {
1011 pEnum->m_next_index = m_next_index;
1012 *ppenum = static_cast<IEnumGUID *>(pEnum);
1013 }
1014
1015 return hr;
1016}
static HRESULT CreateInstance(CProfilesEnumGuid **ppOut)
#define SUCCEEDED(hr)
Definition: intsafe.h:50
HRESULT hr
Definition: shlfolder.c:183
#define E_POINTER
Definition: winerror.h:3480

◆ CreateInstance()

HRESULT CProfilesEnumGuid::CreateInstance ( CProfilesEnumGuid **  ppOut)
static

Definition at line 1018 of file inputprocessor.cpp.

1019{
1021 if (!This)
1022 return E_OUTOFMEMORY;
1023
1025 KEY_READ | KEY_WRITE, NULL, &This->m_key, NULL) != ERROR_SUCCESS)
1026 {
1027 delete This;
1028 return E_FAIL;
1029 }
1030
1031 *ppOut = This;
1032 TRACE("returning %p\n", *ppOut);
1033 return S_OK;
1034}
#define szwSystemTIPKey
Definition: precomp.h:105
#define cicNoThrow
Definition: cicbase.h:46
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_FAIL
Definition: ddrawi.h:102
#define ERROR_SUCCESS
Definition: deptool.c:10
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
Definition: reg.c:1096
#define S_OK
Definition: intsafe.h:52
#define KEY_READ
Definition: nt_native.h:1023
#define KEY_WRITE
Definition: nt_native.h:1031
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12

Referenced by Clone(), and CInputProcessorProfiles::EnumInputProcessorInfo().

◆ Next()

STDMETHODIMP CProfilesEnumGuid::Next ( _In_ ULONG  celt,
_Out_ GUID rgelt,
_Out_ ULONG pceltFetched 
)
override

Definition at line 943 of file inputprocessor.cpp.

947{
948 ULONG fetched = 0;
949
950 TRACE("(%p)\n", this);
951
952 if (!rgelt)
953 return E_POINTER;
954
955 if (m_key)
956 {
957 while (fetched < celt)
958 {
960 HRESULT hr;
961 WCHAR catid[39];
962 DWORD cName = _countof(catid);
963
966 break;
967
968 ++m_next_index;
969
970 hr = CLSIDFromString(catid, rgelt);
971 if (FAILED(hr))
972 continue;
973
974 ++fetched;
975 ++rgelt;
976 }
977 }
978
979 if (pceltFetched)
980 *pceltFetched = fetched;
981 return fetched == celt ? S_OK : S_FALSE;
982}
#define ERROR_MORE_DATA
Definition: dderror.h:13
static LSTATUS(WINAPI *pRegDeleteTreeW)(HKEY
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
Definition: reg.c:2504
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
Definition: compobj.c:2338
unsigned long DWORD
Definition: ntddk_ex.h:95
#define FAILED(hr)
Definition: intsafe.h:51
#define error(str)
Definition: mkdosfs.c:1605
GUID catid
Definition: msctf.idl:629
#define _countof(array)
Definition: sndvol32.h:70
uint32_t ULONG
Definition: typedefs.h:59
#define S_FALSE
Definition: winerror.h:3451
__wchar_t WCHAR
Definition: xmlstorage.h:180

◆ QueryInterface()

STDMETHODIMP CProfilesEnumGuid::QueryInterface ( REFIID  iid,
LPVOID ppvObj 
)
override

Definition at line 913 of file inputprocessor.cpp.

914{
915 *ppvObj = NULL;
916
917 if (iid == IID_IUnknown || iid == IID_IEnumGUID)
918 *ppvObj = static_cast<IEnumGUID *>(this);
919
920 if (*ppvObj)
921 {
922 AddRef();
923 return S_OK;
924 }
925
926 WARN("unsupported interface: %s\n", debugstr_guid(&iid));
927 return E_NOINTERFACE;
928}
#define WARN(fmt,...)
Definition: precomp.h:61
const GUID IID_IUnknown
ULONG AddRef()
#define debugstr_guid
Definition: kernel32.h:35
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ Reset()

STDMETHODIMP CProfilesEnumGuid::Reset ( )
override

Implements IEnumGUID.

Definition at line 991 of file inputprocessor.cpp.

992{
993 TRACE("(%p)\n", this);
994 m_next_index = 0;
995 return S_OK;
996}

◆ Skip()

STDMETHODIMP CProfilesEnumGuid::Skip ( _In_ ULONG  celt)
override

Definition at line 984 of file inputprocessor.cpp.

985{
986 TRACE("(%p)\n", this);
987 m_next_index += celt;
988 return S_OK;
989}

◆ STDMETHODIMP_() [1/2]

CProfilesEnumGuid::STDMETHODIMP_ ( ULONG  )
override

◆ STDMETHODIMP_() [2/2]

CProfilesEnumGuid::STDMETHODIMP_ ( ULONG  )
override

Member Data Documentation

◆ m_cRefs

LONG CProfilesEnumGuid::m_cRefs
protected

Definition at line 191 of file inputprocessor.cpp.

◆ m_key

HKEY CProfilesEnumGuid::m_key
protected

Definition at line 192 of file inputprocessor.cpp.

Referenced by Next(), and ~CProfilesEnumGuid().

◆ m_next_index

DWORD CProfilesEnumGuid::m_next_index
protected

Definition at line 193 of file inputprocessor.cpp.

Referenced by Clone(), Next(), Reset(), and Skip().


The documentation for this class was generated from the following file: