ReactOS 0.4.17-dev-934-g091855f
CMscExtractIcon Class Reference
Inheritance diagram for CMscExtractIcon:
Collaboration diagram for CMscExtractIcon:

Public Member Functions

 CMscExtractIcon ()
 
 ~CMscExtractIcon ()
 
HRESULT GetIconLocationFromMsc (_In_ PWSTR pszIconFile, _In_ UINT cchMax, _Out_ int *piIndex)
 
HRESULT GetDefaultIconLocation (_In_ PWSTR pszIconFile, _In_ UINT cchMax, _Out_ int *piIndex)
 
IFACEMETHODIMP Extract (_In_ PCWSTR pszFile, _In_ UINT nIconIndex, _Out_ HICON *phiconLarge, _Out_ HICON *phiconSmall, _In_ UINT nIconSize) override
 
IFACEMETHODIMP GetIconLocation (_In_ UINT GilIn, _In_ PWSTR pszIconFile, _In_ UINT cchMax, _Out_ int *piIndex, _Out_ UINT *GilOut) override
 
IFACEMETHODIMP GetClassID (_Out_ CLSID *pClassID) override
 
IFACEMETHODIMP IsDirty () override
 
IFACEMETHODIMP Load (_In_ LPCOLESTR pszFileName, _In_ DWORD dwMode) override
 
IFACEMETHODIMP Save (_In_ LPCOLESTR pszFileName, _In_ BOOL fRemember) override
 
IFACEMETHODIMP SaveCompleted (_In_ LPCOLESTR pszFileName) override
 
IFACEMETHODIMP GetCurFile (_In_ LPOLESTR *ppszFileName) override
 
- Public Member Functions inherited from ATL::CComObjectRootEx< CComMultiThreadModelNoCS >
 ~CComObjectRootEx ()
 
ULONG InternalAddRef ()
 
ULONG InternalRelease ()
 
void Lock ()
 
void Unlock ()
 
HRESULT _AtlInitialConstruct ()
 
- Public Member Functions inherited from ATL::CComObjectRootBase
 CComObjectRootBase ()
 
 ~CComObjectRootBase ()
 
void SetVoid (void *)
 
HRESULT _AtlFinalConstruct ()
 
HRESULT FinalConstruct ()
 
void InternalFinalConstructAddRef ()
 
void InternalFinalConstructRelease ()
 
void FinalRelease ()
 
- Public Member Functions inherited from IExtractIconW
HRESULT GetIconLocation ([in] UINT uFlags, [out, size_is(cchMax)] LPWSTR szIconFile, [in] UINT cchMax, [out] INT *piIndex, [out] UINT *pwFlags)
 
HRESULT Extract ([in] LPCWSTR pszFile, [in] UINT nIconIndex, [out] HICON *phiconLarge, [out] HICON *phiconSmall, [in] UINT nIconSize)
 
- Public Member Functions inherited from IUnknown
HRESULT QueryInterface ([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
 
ULONG AddRef ()
 
ULONG Release ()
 
- Public Member Functions inherited from IPersistFile
HRESULT IsDirty ()
 
HRESULT Load ([in] LPCOLESTR pszFileName, [in] DWORD dwMode)
 
HRESULT Save ([in, unique] LPCOLESTR pszFileName, [in] BOOL fRemember)
 
HRESULT SaveCompleted ([in, unique] LPCOLESTR pszFileName)
 
HRESULT GetCurFile ([out] LPOLESTR *ppszFileName)
 
- Public Member Functions inherited from IPersist
HRESULT GetClassID ([out] CLSID *pClassID)
 

Protected Attributes

PWSTR m_File = NULL
 

Additional Inherited Members

- Public Types inherited from IExtractIconW
typedef IExtractIconW * LPEXTRACTICONW
 
- Public Types inherited from IUnknown
typedef IUnknown * LPUNKNOWN
 
- Public Types inherited from IPersistFile
typedef IPersistFile * LPPERSISTFILE
 
- Public Types inherited from IPersist
typedef IPersist * LPPERSIST
 
- Static Public Member Functions inherited from ATL::CComObjectRootBase
static void WINAPI ObjectMain (bool)
 
static const struct _ATL_CATMAP_ENTRY * GetCategoryMap ()
 
static HRESULT WINAPI InternalQueryInterface (void *pThis, const _ATL_INTMAP_ENTRY *pEntries, REFIID iid, void **ppvObject)
 
- Public Attributes inherited from ATL::CComObjectRootBase
LONG m_dwRef
 

Detailed Description

Definition at line 22 of file mmcshext.cpp.

Constructor & Destructor Documentation

◆ CMscExtractIcon()

CMscExtractIcon::CMscExtractIcon ( )
inline

Definition at line 32 of file mmcshext.cpp.

33 {
34 }

◆ ~CMscExtractIcon()

CMscExtractIcon::~CMscExtractIcon ( )
inline

Definition at line 36 of file mmcshext.cpp.

37 {
39 }
void WINAPI SHFree(LPVOID pv)
Definition: shellole.c:370

Member Function Documentation

◆ Extract()

IFACEMETHODIMP CMscExtractIcon::Extract ( _In_ PCWSTR  pszFile,
_In_ UINT  nIconIndex,
_Out_ HICON *  phiconLarge,
_Out_ HICON *  phiconSmall,
_In_ UINT  nIconSize 
)
inlineoverride

Definition at line 53 of file mmcshext.cpp.

54 {
55 return S_FALSE; // All my paths are real files, call SHExtractIconsW/SHDefExtractIconW for me.
56 }
#define S_FALSE
Definition: winerror.h:3451

◆ GetClassID()

IFACEMETHODIMP CMscExtractIcon::GetClassID ( _Out_ CLSID *  pClassID)
inlineoverride

Definition at line 71 of file mmcshext.cpp.

72 {
73 return E_NOTIMPL;
74 }
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ GetCurFile()

IFACEMETHODIMP CMscExtractIcon::GetCurFile ( _In_ LPOLESTR *  ppszFileName)
inlineoverride

Definition at line 98 of file mmcshext.cpp.

99 {
100 return E_NOTIMPL;
101 }

◆ GetDefaultIconLocation()

HRESULT CMscExtractIcon::GetDefaultIconLocation ( _In_ PWSTR  pszIconFile,
_In_ UINT  cchMax,
_Out_ int *  piIndex 
)
inline

Definition at line 43 of file mmcshext.cpp.

44 {
45 *piIndex = 0;
46 WCHAR szDir[MAX_PATH + 1 + 8 + 3];
48 PathAddBackslashW(szDir);
49 return StringCchPrintfW(pszIconFile, cchMax, L"%smmc.exe", szDir) == S_OK ? S_OK : S_FALSE;
50 }
UINT cchMax
#define MAX_PATH
Definition: compat.h:34
#define L(x)
Definition: resources.c:13
#define S_OK
Definition: intsafe.h:52
#define PathAddBackslashW
Definition: pathcch.h:302
short WCHAR
Definition: pedump.c:58
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
Definition: strsafe.h:530
#define GetSystemDirectory
Definition: winbase.h:3565

Referenced by GetIconLocation().

◆ GetIconLocation()

IFACEMETHODIMP CMscExtractIcon::GetIconLocation ( _In_ UINT  GilIn,
_In_ PWSTR  pszIconFile,
_In_ UINT  cchMax,
_Out_ int *  piIndex,
_Out_ UINT *  GilOut 
)
inlineoverride

Definition at line 58 of file mmcshext.cpp.

59 {
60 *GilOut = GIL_PERINSTANCE; // Every .msc file has a unique icon
61
62 if (GilIn & GIL_ASYNC)
63 return E_PENDING;
64
65 if ((GilIn & GIL_DEFAULTICON) || FAILED(GetIconLocationFromMsc(pszIconFile, cchMax, piIndex)))
66 return GetDefaultIconLocation(pszIconFile, cchMax, piIndex);
67 return S_OK;
68 }
HRESULT GetIconLocationFromMsc(_In_ PWSTR pszIconFile, _In_ UINT cchMax, _Out_ int *piIndex)
Definition: mmcshext.cpp:159
HRESULT GetDefaultIconLocation(_In_ PWSTR pszIconFile, _In_ UINT cchMax, _Out_ int *piIndex)
Definition: mmcshext.cpp:43
#define E_PENDING
Definition: dinput.h:172
#define FAILED(hr)
Definition: intsafe.h:51

◆ GetIconLocationFromMsc()

HRESULT CMscExtractIcon::GetIconLocationFromMsc ( _In_ PWSTR  pszIconFile,
_In_ UINT  cchMax,
_Out_ int *  piIndex 
)

Definition at line 159 of file mmcshext.cpp.

160{
161 if (!m_File)
162 return E_UNEXPECTED;
163
164 CComPtr<IStream> pStream;
166 if (FAILED(hr))
167 return hr;
168
169 VARIANT v;
170 V_VT(&v) = VT_UNKNOWN;
171 V_UNKNOWN(&v) = pStream;
172 CComPtr<IXMLDOMDocument2> pDoc;
173 if (FAILED(hr = LoadXmlFromVariant(&v, &pDoc)))
174 return hr;
176
177 CComPtr<IXMLDOMNode> pDomNode;
178 hr = pDoc->selectSingleNode(const_cast<PWSTR>(L"/MMC_ConsoleFile/VisualAttributes/Icon"), &pDomNode);
179 if (FAILED(hr))
180 return hr;
181 if (hr != S_OK) // Some files have an empty <VisualAttributes/> element
183
184 BSTR bstr;
185 *piIndex = 0;
186 if (SUCCEEDED(GetAttributeValue(pDomNode, L"Index", &bstr)))
187 {
188 *piIndex = StrToIntW(bstr);
189 SysFreeString(bstr);
190 }
191
192 if (SUCCEEDED(hr = GetAttributeValue(pDomNode, L"File", &bstr)))
193 {
194 hr = StringCchCopyW(pszIconFile, cchMax, bstr);
195 SysFreeString(bstr);
196 }
197 return hr;
198}
HRESULT hr
Definition: delayimp.cpp:582
INT WINAPI StrToIntW(LPCWSTR lpString)
Definition: string.c:407
OLECHAR * BSTR
Definition: compat.h:2293
@ VT_UNKNOWN
Definition: compat.h:2308
HRESULT WINAPI SHCreateStreamOnFileW(const WCHAR *path, DWORD mode, IStream **stream)
Definition: main.c:1180
const GLdouble * v
Definition: gl.h:2040
#define SUCCEEDED(hr)
Definition: intsafe.h:50
static HRESULT LoadXmlFromVariant(_In_ VARIANT *pVar, _Out_ IXMLDOMDocument2 **ppDoc)
Definition: mmcshext.cpp:146
static HRESULT SetXPathSelectionLanguage(_In_ IXMLDOMDocument2 *pDoc)
Definition: mmcshext.cpp:116
static HRESULT GetAttributeValue(_In_ IXMLDOMNode *pNode, _In_ LPCWSTR pszName, _Out_ BSTR *pOut)
Definition: mmcshext.cpp:124
#define STGM_SHARE_DENY_WRITE
Definition: objbase.h:941
#define STGM_READ
Definition: objbase.h:936
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:273
#define V_UNKNOWN(A)
Definition: oleauto.h:281
#define V_VT(A)
Definition: oleauto.h:211
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:149
uint16_t * PWSTR
Definition: typedefs.h:56
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
Definition: winerror.h:210
#define E_UNEXPECTED
Definition: winerror.h:3528
#define ERROR_NOT_FOUND
Definition: winerror.h:1014

Referenced by GetIconLocation().

◆ IsDirty()

IFACEMETHODIMP CMscExtractIcon::IsDirty ( void  )
inlineoverride

Implements IPersistFile.

Definition at line 76 of file mmcshext.cpp.

77 {
78 return E_NOTIMPL;
79 }

◆ Load()

IFACEMETHODIMP CMscExtractIcon::Load ( _In_ LPCOLESTR  pszFileName,
_In_ DWORD  dwMode 
)
inlineoverride

Definition at line 81 of file mmcshext.cpp.

82 {
84 m_File = NULL;
86 }
#define NULL
Definition: types.h:112
HRESULT WINAPI SHStrDupW(const WCHAR *src, WCHAR **dest)
Definition: main.c:1692
WORD WORD PSZ PSZ pszFileName
Definition: vdmdbg.h:44

◆ Save()

IFACEMETHODIMP CMscExtractIcon::Save ( _In_ LPCOLESTR  pszFileName,
_In_ BOOL  fRemember 
)
inlineoverride

Definition at line 88 of file mmcshext.cpp.

89 {
90 return E_NOTIMPL;
91 }

◆ SaveCompleted()

IFACEMETHODIMP CMscExtractIcon::SaveCompleted ( _In_ LPCOLESTR  pszFileName)
inlineoverride

Definition at line 93 of file mmcshext.cpp.

94 {
95 return E_NOTIMPL;
96 }

Member Data Documentation

◆ m_File

PWSTR CMscExtractIcon::m_File = NULL
protected

Definition at line 29 of file mmcshext.cpp.

Referenced by GetIconLocationFromMsc(), Load(), and ~CMscExtractIcon().


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