Changeset 545
- Timestamp:
- Nov 26, 2015, 3:24:03 AM (8 years ago)
- Location:
- trunk/DirectShowSpy
- Files:
-
- 2 added
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/DirectShowSpy/Common.h
r468 r545 43 43 public: 44 44 // CProcessTokenPrivileges 45 CProcessTokenPrivileges() throw():45 CProcessTokenPrivileges() : 46 46 m_bTakeOwnershipPrivilegeEnabled(FALSE), 47 47 m_bRestorePrivilegeEnabled(FALSE) … … 66 66 __E(m_ProcessToken.EnablePrivilege(SE_RESTORE_NAME)); 67 67 m_bRestorePrivilegeEnabled = TRUE; 68 } 69 BOOL IsTakeOwnershipPrivilegeEnabled() const 70 { 71 return m_bTakeOwnershipPrivilegeEnabled; 72 } 73 BOOL IsRestorePrivilegeEnabled() const 74 { 75 return m_bRestorePrivilegeEnabled; 68 76 } 69 77 }; -
trunk/DirectShowSpy/DirectShowSpy.vcxproj
r503 r545 163 163 <WarningLevel>Level3</WarningLevel> 164 164 <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> 165 <AdditionalIncludeDirectories> 166 </AdditionalIncludeDirectories> 165 167 </ClCompile> 166 168 <ResourceCompile> … … 200 202 <WarningLevel>Level3</WarningLevel> 201 203 <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> 204 <AdditionalIncludeDirectories> 205 </AdditionalIncludeDirectories> 202 206 </ClCompile> 203 207 <ResourceCompile> … … 243 247 <WarningLevel>Level3</WarningLevel> 244 248 <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> 249 <AdditionalIncludeDirectories> 250 </AdditionalIncludeDirectories> 245 251 </ClCompile> 246 252 <ResourceCompile> … … 288 294 <WarningLevel>Level3</WarningLevel> 289 295 <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> 296 <AdditionalIncludeDirectories> 297 </AdditionalIncludeDirectories> 290 298 </ClCompile> 291 299 <ResourceCompile> … … 334 342 <WarningLevel>Level3</WarningLevel> 335 343 <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> 344 <AdditionalIncludeDirectories> 345 </AdditionalIncludeDirectories> 336 346 </ClCompile> 337 347 <ResourceCompile> … … 379 389 <WarningLevel>Level3</WarningLevel> 380 390 <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> 391 <AdditionalIncludeDirectories> 392 </AdditionalIncludeDirectories> 381 393 </ClCompile> 382 394 <ResourceCompile> -
trunk/DirectShowSpy/FilterGraphList.h
r503 r545 275 275 { 276 276 CComPtr<IMoniker> pMoniker; 277 if(pEnumMoniker->Next(1, &pMoniker, NULL) != S_OK) 277 ULONG nElementCount; 278 if(pEnumMoniker->Next(1, &pMoniker, &nElementCount) != S_OK) 278 279 break; 279 280 _ATLTRY -
trunk/DirectShowSpy/FilterGraphSpy.cpp
r440 r545 16 16 #include "stdafx.h" 17 17 #include "resource.h" 18 #include "FilterGraphSpy.h" 19 #include "FilterMapperSpy.h" 20 #include "SystemDeviceEnumeratorSpy.h" 18 21 19 22 //////////////////////////////////////////////////////////// -
trunk/DirectShowSpy/FilterGraphSpy.h
r519 r545 412 412 public CComObjectRootEx<CComMultiThreadModelNoCS>, 413 413 public CComCoClass<CLogFilter, &__uuidof(CLogFilterBase)>, 414 public CTransform ationFilterT<CLogFilter>,414 public CTransformFilterT<CLogFilter>, 415 415 public CBasePersistT<CLogFilter> 416 416 { -
trunk/DirectShowSpy/FilterMapperSpy.h
r376 r545 17 17 18 18 #include "rodshow.h" 19 #include <..\Samples\multimedia\directshow\misc\mapper\fil_data.h>19 #include "fil_data.h" //<..\Samples\multimedia\directshow\misc\mapper\fil_data.h> 20 20 #include "Module_i.h" 21 21 #include "Common.h" … … 31 31 public IDispatchImpl<IFilterMapperSpy>, 32 32 public IAMFilterData, 33 public IFilterMapper2 33 public IFilterMapper, 34 public IFilterMapper3 34 35 { 35 36 typedef CFilterMapperSpyT<T, t_pFilterMapperClassIdentifier> CFilterMapperSpy; … … 44 45 DECLARE_GET_CONTROLLING_UNKNOWN() 45 46 46 DECLARE_QI_TRACE(CFilterMapperSpy )47 48 BEGIN_COM_MAP(CFilterMapperSpy )47 DECLARE_QI_TRACE(CFilterMapperSpyT) 48 49 BEGIN_COM_MAP(CFilterMapperSpyT) 49 50 COM_INTERFACE_ENTRY(IFilterMapperSpy) 50 51 COM_INTERFACE_ENTRY(IAMFilterData) 52 COM_INTERFACE_ENTRY(IFilterMapper3) 51 53 COM_INTERFACE_ENTRY(IFilterMapper2) 54 COM_INTERFACE_ENTRY(IFilterMapper) 52 55 COM_INTERFACE_ENTRY_AGGREGATE_BLIND(m_pInnerUnknown) 53 56 //COM_INTERFACE_ENTRY(IDispatch) … … 58 61 HINSTANCE m_hQuartzModule; 59 62 CComPtr<IUnknown> m_pInnerUnknown; 60 CComPtr<IFilterMapper2> m_pFilterMapper2; 63 CComPtr<IFilterMapper3> m_pFilterMapper3; 64 CComPtr<IFilterMapper> m_pFilterMapper; 61 65 CComPtr<IAMFilterData> m_pAmFilterData; 62 66 … … 64 68 { 65 69 _A(pFilterInformation); 66 _Z4(atlTraceCOM, 4, _T("pFilterInformation { dwVersion %d, dwMerit 0x%08 x, cPins2 %d }\n"), pFilterInformation->dwVersion, pFilterInformation->dwMerit, pFilterInformation->cPins2);70 _Z4(atlTraceCOM, 4, _T("pFilterInformation { dwVersion %d, dwMerit 0x%08X, cPins2 %d }\n"), pFilterInformation->dwVersion, pFilterInformation->dwMerit, pFilterInformation->cPins2); 67 71 if(pFilterInformation->dwVersion == 2) 68 72 for(ULONG nPinIndex = 0; nPinIndex < pFilterInformation->cPins2; nPinIndex++) 69 73 { 70 74 const REGFILTERPINS2& Pin = pFilterInformation->rgPins2[nPinIndex]; 71 _Z4(atlTraceCOM, 4, _T("pFilterInformation->rgPins2[%d] { dwFlags 0x% x, cInstances %d, nMediaTypes %d, nMediums %d }\n"), nPinIndex, Pin.dwFlags, Pin.cInstances, Pin.nMediaTypes, Pin.nMediums, Pin.clsPinCategory ? (LPCWSTR) _PersistHelper::StringFromIdentifier(*Pin.clsPinCategory) : L"NULL");75 _Z4(atlTraceCOM, 4, _T("pFilterInformation->rgPins2[%d] { dwFlags 0x%X, cInstances %d, nMediaTypes %d, nMediums %d }\n"), nPinIndex, Pin.dwFlags, Pin.cInstances, Pin.nMediaTypes, Pin.nMediums, Pin.clsPinCategory ? (LPCWSTR) _PersistHelper::StringFromIdentifier(*Pin.clsPinCategory) : L"NULL"); 72 76 for(UINT nIndex = 0; nIndex < Pin.nMediaTypes; nIndex++) 73 77 { … … 78 82 { 79 83 const REGPINMEDIUM& Medium = Pin.lpMedium[nIndex]; 80 _Z4(atlTraceCOM, 4, _T("pFilterInformation->rgPins2[...].lpMedium[%d] { clsMedium %ls, dw1 0x% x, dw2 0x%x}\n"), nIndex, _PersistHelper::StringFromIdentifier(Medium.clsMedium), Medium.dw1, Medium.dw2);84 _Z4(atlTraceCOM, 4, _T("pFilterInformation->rgPins2[...].lpMedium[%d] { clsMedium %ls, dw1 0x%X, dw2 0x%X }\n"), nIndex, _PersistHelper::StringFromIdentifier(Medium.clsMedium), Medium.dw1, Medium.dw2); 81 85 } 82 86 } 83 87 } 84 BOOL IsAggregated() const throw()88 BOOL IsAggregated() const 85 89 { 86 90 return (ULONG) m_dwRef >= 0x00001000; … … 89 93 public: 90 94 // CFilterMapperSpyT 91 static LPCTSTR GetOriginalLibraryName() throw()95 static LPCTSTR GetOriginalLibraryName() 92 96 { 93 97 return _T("quartz.dll"); … … 97 101 return _StringHelper::GetLine(T::IDR, 2); 98 102 } 99 static HRESULT WINAPI UpdateRegistry(BOOL bRegister) throw()103 static HRESULT WINAPI UpdateRegistry(BOOL bRegister) 100 104 { 101 105 _Z2(atlTraceRegistrar, 2, _T("bRegister %d\n"), bRegister); … … 110 114 return S_OK; 111 115 } 112 CFilterMapperSpyT() throw():116 CFilterMapperSpyT() : 113 117 m_hQuartzModule(NULL) 114 118 { 115 119 _Z4_THIS(); 116 120 } 117 ~CFilterMapperSpyT() throw()121 ~CFilterMapperSpyT() 118 122 { 119 123 _Z4_THIS(); 120 124 } 121 HRESULT FinalConstruct() throw()125 HRESULT FinalConstruct() 122 126 { 123 127 _ATLTRY … … 126 130 TCHAR pszPath[MAX_PATH] = { 0 }; 127 131 _W(GetModuleFileName(NULL, pszPath, DIM(pszPath))); 128 _Z4(atlTraceRefcount, 4, _T("pszPath \"%s\", this 0x% 08x, m_dwRef %d, m_bIsAggregated %d\n"), pszPath, this, m_dwRef, m_bIsAggregated);132 _Z4(atlTraceRefcount, 4, _T("pszPath \"%s\", this 0x%p, m_dwRef %d, m_bIsAggregated %d\n"), pszPath, this, m_dwRef, m_bIsAggregated); 129 133 const HINSTANCE hModule = CoLoadLibrary(const_cast<LPOLESTR>((LPCOLESTR) CT2COLE(GetOriginalLibraryName())), TRUE); 130 134 _ATLTRY … … 140 144 CComPtr<IUnknown> pUnknown; 141 145 __C(pClassFactory->CreateInstance(pControllingUnknown, __uuidof(IUnknown), (VOID**) &pUnknown)); 142 const CComQIPtr<IFilterMapper2> pFilterMapper2 = pUnknown; 143 __D(pFilterMapper2, E_NOINTERFACE); 144 pFilterMapper2.p->Release(); 146 const CComQIPtr<IFilterMapper3> pFilterMapper3 = pUnknown; 147 __D(pFilterMapper3, E_NOINTERFACE); 148 pFilterMapper3.p->Release(); 149 const CComQIPtr<IFilterMapper> pFilterMapper = pUnknown; 150 __D(pFilterMapper, E_NOINTERFACE); 151 pFilterMapper.p->Release(); 145 152 const CComQIPtr<IAMFilterData> pAmFilterData = pUnknown; 146 153 __D(pAmFilterData, E_NOINTERFACE); 147 154 pAmFilterData.p->Release(); 148 155 m_pInnerUnknown = pUnknown; 149 m_pFilterMapper2 = pFilterMapper2; 156 m_pFilterMapper3 = pFilterMapper3; 157 m_pFilterMapper = pFilterMapper; 150 158 m_pAmFilterData = pAmFilterData; 151 159 } … … 165 173 return S_OK; 166 174 } 167 VOID FinalRelease() throw()168 { 169 _Z5(atlTraceRefcount, 5, _T("m_dwRef 0x% x\n"), m_dwRef);175 VOID FinalRelease() 176 { 177 _Z5(atlTraceRefcount, 5, _T("m_dwRef 0x%X\n"), m_dwRef); 170 178 CComPtr<IUnknown> pControllingUnknown = GetControllingUnknown(); 171 if(m_pFilterMapper 2)179 if(m_pFilterMapper3) 172 180 { 173 181 pControllingUnknown.p->AddRef(); 174 m_pFilterMapper2 = NULL; 182 m_pFilterMapper3.Release(); 183 } 184 if(m_pFilterMapper) 185 { 186 pControllingUnknown.p->AddRef(); 187 m_pFilterMapper.Release(); 175 188 } 176 189 if(m_pAmFilterData) 177 190 { 178 191 pControllingUnknown.p->AddRef(); 179 m_pAmFilterData = NULL;192 m_pAmFilterData.Release(); 180 193 } 181 194 _ATLTRY 182 195 { 183 m_pInnerUnknown = NULL;196 m_pInnerUnknown.Release(); 184 197 } 185 198 _ATLCATCHALL() … … 199 212 200 213 // IAMFilterData 201 STDMETHOD(ParseFilterData)(BYTE* pnFilterData, ULONG nFilterDataSize, BYTE** ppFilterInformation) throw()214 STDMETHOD(ParseFilterData)(BYTE* pnFilterData, ULONG nFilterDataSize, BYTE** ppFilterInformation) override 202 215 { 203 216 _Z4(atlTraceCOM, 4, _T("nFilterDataSize %d\n"), nFilterDataSize); … … 214 227 return nResult; 215 228 } 216 STDMETHOD(CreateFilterData)(REGFILTER2* pFilterInformation, BYTE** ppnFilterData, ULONG* pnFilterDataSize) throw()229 STDMETHOD(CreateFilterData)(REGFILTER2* pFilterInformation, BYTE** ppnFilterData, ULONG* pnFilterDataSize) override 217 230 { 218 231 _Z4(atlTraceCOM, 4, _T("...\n")); … … 229 242 } 230 243 244 // IFilterMapper3 245 STDMETHOD(GetICreateDevEnum)(ICreateDevEnum** ppEnum) override 246 { 247 _Z4(atlTraceCOM, 4, _T("...\n")); 248 return m_pFilterMapper3->GetICreateDevEnum(ppEnum); 249 } 250 231 251 // IFilterMapper2 232 STDMETHOD(CreateCategory)(REFCLSID CategoryIdentifier, DWORD nMerit, LPCWSTR pszDescription) throw()233 { 234 _Z4(atlTraceCOM, 4, _T("CategoryIdentifier %ls, nMerit 0x%08 x, pszDescription \"%s\"\n"), _PersistHelper::StringFromIdentifier(CategoryIdentifier), nMerit, CString(pszDescription));235 return m_pFilterMapper 2->CreateCategory(CategoryIdentifier, nMerit, pszDescription);236 } 237 STDMETHOD(UnregisterFilter)(const CLSID* pCategoryIdentifier, LPCOLESTR pszInstance, REFCLSID FilterClassIdentifier) throw()252 STDMETHOD(CreateCategory)(REFCLSID CategoryIdentifier, DWORD nMerit, LPCWSTR pszDescription) override 253 { 254 _Z4(atlTraceCOM, 4, _T("CategoryIdentifier %ls, nMerit 0x%08X, pszDescription \"%s\"\n"), _PersistHelper::StringFromIdentifier(CategoryIdentifier), nMerit, CString(pszDescription)); 255 return m_pFilterMapper3->CreateCategory(CategoryIdentifier, nMerit, pszDescription); 256 } 257 STDMETHOD(UnregisterFilter)(const CLSID* pCategoryIdentifier, LPCOLESTR pszInstance, REFCLSID FilterClassIdentifier) override 238 258 { 239 259 _Z4(atlTraceCOM, 4, _T("pCategoryIdentifier %ls, pszInstance %s, FilterClassIdentifier %ls\n"), pCategoryIdentifier ? (LPCWSTR) _PersistHelper::StringFromIdentifier(*pCategoryIdentifier) : L"NULL", pszInstance ? (LPCTSTR) AtlFormatString(_T("\"%s\""), CString(pszInstance)) : _T("NULL"), _PersistHelper::StringFromIdentifier(FilterClassIdentifier)); 240 return m_pFilterMapper 2->UnregisterFilter(pCategoryIdentifier, pszInstance, FilterClassIdentifier);241 } 242 STDMETHOD(RegisterFilter)(REFCLSID FilterClassIdentifier, LPCWSTR pszName, IMoniker** ppMoniker, const CLSID* pCategoryIdentifier, LPCOLESTR pszInstance, const REGFILTER2* pFilterInformation) throw()260 return m_pFilterMapper3->UnregisterFilter(pCategoryIdentifier, pszInstance, FilterClassIdentifier); 261 } 262 STDMETHOD(RegisterFilter)(REFCLSID FilterClassIdentifier, LPCWSTR pszName, IMoniker** ppMoniker, const CLSID* pCategoryIdentifier, LPCOLESTR pszInstance, const REGFILTER2* pFilterInformation) override 243 263 { 244 264 _Z4(atlTraceCOM, 4, _T("FilterClassIdentifier %ls, pszName \"%s\", pCategoryIdentifier %ls, pszInstance %s\n"), _PersistHelper::StringFromIdentifier(FilterClassIdentifier), CString(pszName), pCategoryIdentifier ? (LPCWSTR) _PersistHelper::StringFromIdentifier(*pCategoryIdentifier) : L"NULL", pszInstance ? (LPCTSTR) AtlFormatString(_T("\"%s\""), CString(pszInstance)) : _T("NULL")); … … 252 272 _Z_EXCEPTION(); 253 273 } 254 return m_pFilterMapper 2->RegisterFilter(FilterClassIdentifier, pszName, ppMoniker, pCategoryIdentifier, pszInstance, pFilterInformation);255 } 256 STDMETHOD(EnumMatchingFilters)(IEnumMoniker** ppEnumMoniker, DWORD nFlags, BOOL bExactMatch, DWORD nMinimalMerit, BOOL bInputNeeded, DWORD nInputTypeCount, const GUID* pInputTypes, const REGPINMEDIUM* pInputMedium, const CLSID* pInputPinCategory, BOOL bRender, BOOL bOutputNeeded, DWORD nOutputTypeCount, const GUID* pOutputTypes, const REGPINMEDIUM* pOutputMedium, const CLSID* pOutputPinCategory) throw()257 { 258 _Z4(atlTraceCOM, 4, _T("nFlags 0x% x, bExactMatch %d, nMinimalMerit 0x%08x, bInputNeeded %d, nInputTypeCount %d, pInputPinCategory %ls, bRender %d, bOutputNeeded %d, nOutputTypeCount %d, pOutputPinCategory %ls\n"), nFlags, bExactMatch, nMinimalMerit, bInputNeeded, nInputTypeCount, pInputPinCategory ? (LPCWSTR) _PersistHelper::StringFromIdentifier(*pInputPinCategory) : L"NULL", bRender, bOutputNeeded, nOutputTypeCount, pOutputPinCategory ? (LPCWSTR) _PersistHelper::StringFromIdentifier(*pOutputPinCategory) : L"NULL");274 return m_pFilterMapper3->RegisterFilter(FilterClassIdentifier, pszName, ppMoniker, pCategoryIdentifier, pszInstance, pFilterInformation); 275 } 276 STDMETHOD(EnumMatchingFilters)(IEnumMoniker** ppEnumMoniker, DWORD nFlags, BOOL bExactMatch, DWORD nMinimalMerit, BOOL bInputNeeded, DWORD nInputTypeCount, const GUID* pInputTypes, const REGPINMEDIUM* pInputMedium, const CLSID* pInputPinCategory, BOOL bRender, BOOL bOutputNeeded, DWORD nOutputTypeCount, const GUID* pOutputTypes, const REGPINMEDIUM* pOutputMedium, const CLSID* pOutputPinCategory) override 277 { 278 _Z4(atlTraceCOM, 4, _T("nFlags 0x%X, bExactMatch %d, nMinimalMerit 0x%08X, bInputNeeded %d, nInputTypeCount %d, pInputPinCategory %ls, bRender %d, bOutputNeeded %d, nOutputTypeCount %d, pOutputPinCategory %ls\n"), nFlags, bExactMatch, nMinimalMerit, bInputNeeded, nInputTypeCount, pInputPinCategory ? (LPCWSTR) _PersistHelper::StringFromIdentifier(*pInputPinCategory) : L"NULL", bRender, bOutputNeeded, nOutputTypeCount, pOutputPinCategory ? (LPCWSTR) _PersistHelper::StringFromIdentifier(*pOutputPinCategory) : L"NULL"); 259 279 for(DWORD nInputTypeIndex = 0; nInputTypeIndex < nInputTypeCount; nInputTypeIndex++) 260 280 { … … 264 284 } 265 285 if(pInputMedium) 266 _Z4(atlTraceCOM, 4, _T("pInputMedium { clsMedium %ls, dw1 0x% x, dw2 0x%x}\n"), _PersistHelper::StringFromIdentifier(pInputMedium->clsMedium), pInputMedium->dw1, pInputMedium->dw2);286 _Z4(atlTraceCOM, 4, _T("pInputMedium { clsMedium %ls, dw1 0x%X, dw2 0x%X }\n"), _PersistHelper::StringFromIdentifier(pInputMedium->clsMedium), pInputMedium->dw1, pInputMedium->dw2); 267 287 for(DWORD nOutputTypeIndex = 0; nOutputTypeIndex < nOutputTypeCount; nOutputTypeIndex++) 268 288 { … … 272 292 } 273 293 if(pOutputMedium) 274 _Z4(atlTraceCOM, 4, _T("pOutputMedium { clsMedium %ls, dw1 0x% x, dw2 0x%x}\n"), _PersistHelper::StringFromIdentifier(pOutputMedium->clsMedium), pOutputMedium->dw1, pOutputMedium->dw2);275 const HRESULT nResult = m_pFilterMapper 2->EnumMatchingFilters(ppEnumMoniker, nFlags, bExactMatch, nMinimalMerit, bInputNeeded, nInputTypeCount, pInputTypes, pInputMedium, pInputPinCategory, bRender, bOutputNeeded, nOutputTypeCount, pOutputTypes, pOutputMedium, pOutputPinCategory);294 _Z4(atlTraceCOM, 4, _T("pOutputMedium { clsMedium %ls, dw1 0x%X, dw2 0x%X }\n"), _PersistHelper::StringFromIdentifier(pOutputMedium->clsMedium), pOutputMedium->dw1, pOutputMedium->dw2); 295 const HRESULT nResult = m_pFilterMapper3->EnumMatchingFilters(ppEnumMoniker, nFlags, bExactMatch, nMinimalMerit, bInputNeeded, nInputTypeCount, pInputTypes, pInputMedium, pInputPinCategory, bRender, bOutputNeeded, nOutputTypeCount, pOutputTypes, pOutputMedium, pOutputPinCategory); 276 296 if(SUCCEEDED(nResult)) 277 297 _ATLTRY … … 279 299 const CComPtr<IEnumMoniker>& pEnumMoniker = reinterpret_cast<const CComPtr<IEnumMoniker>&>(*ppEnumMoniker); 280 300 __C(pEnumMoniker->Reset()); 281 CComPtr<IMoniker> pMoniker; 282 while(pEnumMoniker->Next(1, &pMoniker, NULL) == S_OK) 301 for(; ; ) 283 302 { 284 _Z4(atlTraceCOM, 4, _T("pMoniker %ls\n"), _FilterGraphHelper::GetMonikerDisplayName(pMoniker)); 303 CComPtr<IMoniker> pMoniker; 304 ULONG nElementCount; 305 if(pEnumMoniker->Next(1, &pMoniker, &nElementCount) != S_OK) 306 break; 307 _Z4(atlTraceGeneral, 4, _T("pMoniker %ls\n"), _FilterGraphHelper::GetMonikerDisplayName(pMoniker)); 285 308 CComPtr<IBindCtx> pBindCtx; 286 309 __C(CreateBindCtx(0, &pBindCtx)); … … 291 314 const CStringW sDevicePath = _FilterGraphHelper::ReadPropertyBagString(pPropertyBag, OLESTR("DevicePath")); 292 315 _Z4(atlTraceCOM, 4, _T("sFriendlyName \"%ls\", sDescription \"%ls\", sDevicePath \"%ls\"\n"), sFriendlyName, sDescription, sDevicePath); 293 pMoniker.Release();294 316 } 295 317 __C(pEnumMoniker->Reset()); … … 300 322 } 301 323 return nResult; 324 } 325 326 // IFilterMapper 327 STDMETHOD(RegisterFilter)(CLSID FilterClassIdentifier, LPCWSTR pszName, DWORD nMerit) override 328 { 329 _Z4(atlTraceCOM, 4, _T("...\n")); 330 return m_pFilterMapper->RegisterFilter(FilterClassIdentifier, pszName, nMerit); 331 } 332 STDMETHOD(RegisterFilterInstance)(CLSID FilterClassIdentifier, LPCWSTR pszName, CLSID* pMediaResourceIdentifier) override 333 { 334 _Z4(atlTraceCOM, 4, _T("...\n")); 335 return m_pFilterMapper->RegisterFilterInstance(FilterClassIdentifier, pszName, pMediaResourceIdentifier); 336 } 337 STDMETHOD(RegisterPin)(CLSID Filter, LPCWSTR pszName, BOOL bRendered, BOOL bOutput, BOOL bZero, BOOL bMany, CLSID ConnectsToFilter, LPCWSTR pszConnectsToPin) override 338 { 339 _Z4(atlTraceCOM, 4, _T("...\n")); 340 return m_pFilterMapper->RegisterPin(Filter, pszName, bRendered, bOutput, bZero, bMany, ConnectsToFilter, pszConnectsToPin); 341 } 342 STDMETHOD(RegisterPinType)(CLSID FilterClassIdentifier, LPCWSTR pszName, CLSID MajorType, CLSID Subtype) override 343 { 344 _Z4(atlTraceCOM, 4, _T("...\n")); 345 return m_pFilterMapper->RegisterPinType(FilterClassIdentifier, pszName, MajorType, Subtype); 346 } 347 STDMETHOD(UnregisterFilter)(CLSID FilterClassIdentifier) override 348 { 349 _Z4(atlTraceCOM, 4, _T("...\n")); 350 return m_pFilterMapper->UnregisterFilter(FilterClassIdentifier); 351 } 352 STDMETHOD(UnregisterFilterInstance)(CLSID MediaResourceIdentifier) override 353 { 354 _Z4(atlTraceCOM, 4, _T("...\n")); 355 return m_pFilterMapper->UnregisterFilterInstance(MediaResourceIdentifier); 356 } 357 STDMETHOD(UnregisterPin)(CLSID FilterClassIdentifier, LPCWSTR pszName) override 358 { 359 _Z4(atlTraceCOM, 4, _T("...\n")); 360 return m_pFilterMapper->UnregisterPin(FilterClassIdentifier, pszName); 361 } 362 STDMETHOD(EnumMatchingFilters)(IEnumRegFilters** ppEnum, DWORD nMerit, BOOL bInputNeeded, CLSID clsInMaj, CLSID clsInSub, BOOL bRender, BOOL bOutputNeeded, CLSID clsOutMaj, CLSID clsOutSub) override 363 { 364 _Z4(atlTraceCOM, 4, _T("...\n")); 365 return m_pFilterMapper->EnumMatchingFilters(ppEnum, nMerit, bInputNeeded, clsInMaj, clsInSub, bRender, bOutputNeeded, clsOutMaj, clsOutSub); 302 366 } 303 367 }; -
trunk/DirectShowSpy/SystemDeviceEnumeratorSpy.h
r376 r545 44 44 DECLARE_GET_CONTROLLING_UNKNOWN() 45 45 46 DECLARE_QI_TRACE(CSystemDeviceEnumeratorSpy )47 48 BEGIN_COM_MAP(CSystemDeviceEnumeratorSpy )46 DECLARE_QI_TRACE(CSystemDeviceEnumeratorSpyT) 47 48 BEGIN_COM_MAP(CSystemDeviceEnumeratorSpyT) 49 49 COM_INTERFACE_ENTRY(ISystemDeviceEnumeratorSpy) 50 50 COM_INTERFACE_ENTRY(ICreateDevEnum) … … 95 95 96 96 // IPropertyBag 97 STDMETHOD(Read)(LPCOLESTR pszPropertyName, VARIANT* pvValue, IErrorLog* pErrorLog) throw()97 STDMETHOD(Read)(LPCOLESTR pszPropertyName, VARIANT* pvValue, IErrorLog* pErrorLog) override 98 98 { 99 99 _Z4(atlTraceCOM, 4, _T("pszPropertyName %s\n"), CString(pszPropertyName)); … … 104 104 //if(nResult == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) && pszPropertyName && _wcsicmp(pszPropertyName, L"DevicePath") == 0 && pvValue) 105 105 //{ 106 // _Z4(atlTraceGeneral, 4, _T("nResult 0x%08 x\n"), nResult);106 // _Z4(atlTraceGeneral, 4, _T("nResult 0x%08X\n"), nResult); 107 107 // CComVariant vValue = L"\\\\?\\fake"; 108 108 // _V(vValue.Detach(pvValue)); … … 116 116 if(SUCCEEDED(vStringValue.ChangeType(VT_BSTR, pvValue))) 117 117 sValue = CString(vStringValue.bstrVal); 118 _Z4(atlTraceGeneral, 4, _T("nResult 0x%08 x, pvValue->vt 0x%x, %s\n"), nResult, pvValue->vt, sValue);118 _Z4(atlTraceGeneral, 4, _T("nResult 0x%08X, pvValue->vt 0x%X, %s\n"), nResult, pvValue->vt, sValue); 119 119 } else 120 120 { 121 _Z4(atlTraceGeneral, 4, _T("nResult 0x%08 x\n"), nResult);121 _Z4(atlTraceGeneral, 4, _T("nResult 0x%08X\n"), nResult); 122 122 } 123 123 return nResult; … … 129 129 return S_OK; 130 130 } 131 STDMETHOD(Write)(LPCOLESTR pszPropertyName, VARIANT* pvValue) throw()132 { 133 _Z4(atlTraceCOM, 4, _T("pszPropertyName %s, pvValue->vt 0x% x\n"), CString(pszPropertyName), pvValue->vt);131 STDMETHOD(Write)(LPCOLESTR pszPropertyName, VARIANT* pvValue) override 132 { 133 _Z4(atlTraceCOM, 4, _T("pszPropertyName %s, pvValue->vt 0x%X\n"), CString(pszPropertyName), pvValue->vt); 134 134 _ATLTRY 135 135 { 136 136 const HRESULT nResult = m_pPropertyBag->Write(pszPropertyName, pvValue); 137 _Z4(atlTraceGeneral, 4, _T("nResult 0x%08 x\n"), nResult);137 _Z4(atlTraceGeneral, 4, _T("nResult 0x%08X\n"), nResult); 138 138 return nResult; 139 139 } … … 146 146 147 147 // IPropertyBag2 148 STDMETHOD(Read)(ULONG cProperties, PROPBAG2 *pPropBag, IErrorLog *pErrLog, VARIANT *pvarValue, HRESULT *phrError) throw()148 STDMETHOD(Read)(ULONG cProperties, PROPBAG2 *pPropBag, IErrorLog *pErrLog, VARIANT *pvarValue, HRESULT *phrError) override 149 149 { 150 150 _Z4(atlTraceCOM, 4, _T("...\n")); … … 152 152 { 153 153 const HRESULT nResult = m_pPropertyBag2->Read(cProperties, pPropBag, pErrLog, pvarValue, phrError); 154 _Z4(atlTraceGeneral, 4, _T("nResult 0x%08 x\n"), nResult);154 _Z4(atlTraceGeneral, 4, _T("nResult 0x%08X\n"), nResult); 155 155 return nResult; 156 156 } … … 161 161 return S_OK; 162 162 } 163 STDMETHOD(Write)(ULONG cProperties, PROPBAG2 *pPropBag, VARIANT *pvarValue) throw()163 STDMETHOD(Write)(ULONG cProperties, PROPBAG2 *pPropBag, VARIANT *pvarValue) override 164 164 { 165 165 _Z4(atlTraceCOM, 4, _T("...\n")); … … 167 167 { 168 168 const HRESULT nResult = m_pPropertyBag2->Write(cProperties, pPropBag, pvarValue); 169 _Z4(atlTraceGeneral, 4, _T("nResult 0x%08 x\n"), nResult);169 _Z4(atlTraceGeneral, 4, _T("nResult 0x%08X\n"), nResult); 170 170 return nResult; 171 171 } … … 176 176 return S_OK; 177 177 } 178 STDMETHOD(CountProperties)(ULONG *pcProperties) throw()178 STDMETHOD(CountProperties)(ULONG *pcProperties) override 179 179 { 180 180 _Z4(atlTraceCOM, 4, _T("...\n")); … … 182 182 { 183 183 const HRESULT nResult = m_pPropertyBag2->CountProperties(pcProperties); 184 _Z4(atlTraceGeneral, 4, _T("nResult 0x%08 x\n"), nResult);184 _Z4(atlTraceGeneral, 4, _T("nResult 0x%08X\n"), nResult); 185 185 return nResult; 186 186 } … … 191 191 return S_OK; 192 192 } 193 STDMETHOD(GetPropertyInfo)(ULONG iProperty, ULONG cProperties, PROPBAG2* pPropBag, ULONG *pcProperties) throw()193 STDMETHOD(GetPropertyInfo)(ULONG iProperty, ULONG cProperties, PROPBAG2* pPropBag, ULONG *pcProperties) override 194 194 { 195 195 _Z4(atlTraceCOM, 4, _T("...\n")); … … 197 197 { 198 198 const HRESULT nResult = m_pPropertyBag2->GetPropertyInfo(iProperty, cProperties, pPropBag, pcProperties); 199 _Z4(atlTraceGeneral, 4, _T("nResult 0x%08 x\n"), nResult);199 _Z4(atlTraceGeneral, 4, _T("nResult 0x%08X\n"), nResult); 200 200 return nResult; 201 201 } … … 206 206 return S_OK; 207 207 } 208 STDMETHOD(LoadObject)(LPCOLESTR pstrName, DWORD dwHint, IUnknown *pUnkObject, IErrorLog *pErrLog) throw()208 STDMETHOD(LoadObject)(LPCOLESTR pstrName, DWORD dwHint, IUnknown *pUnkObject, IErrorLog *pErrLog) override 209 209 { 210 210 _Z4(atlTraceCOM, 4, _T("...\n")); … … 212 212 { 213 213 const HRESULT nResult = m_pPropertyBag2->LoadObject(pstrName, dwHint, pUnkObject, pErrLog); 214 _Z4(atlTraceGeneral, 4, _T("nResult 0x%08 x\n"), nResult);214 _Z4(atlTraceGeneral, 4, _T("nResult 0x%08X\n"), nResult); 215 215 return nResult; 216 216 } … … 261 261 262 262 // IPersist 263 STDMETHOD(GetClassID)(CLSID* pClassIdentifier) throw()263 STDMETHOD(GetClassID)(CLSID* pClassIdentifier) override 264 264 { 265 265 _Z4(atlTraceCOM, 4, _T("...\n")); … … 268 268 269 269 // IPersistStream 270 STDMETHOD(IsDirty)() throw()270 STDMETHOD(IsDirty)() override 271 271 { 272 272 _Z4(atlTraceCOM, 4, _T("...\n")); 273 273 return m_pMoniker->IsDirty(); 274 274 } 275 STDMETHOD(Load)(IStream* pStream) throw()275 STDMETHOD(Load)(IStream* pStream) override 276 276 { 277 277 _Z4(atlTraceCOM, 4, _T("...\n")); 278 278 return m_pMoniker->Load(pStream); 279 279 } 280 STDMETHOD(Save)(IStream* pStream, BOOL bClearDirty) throw()280 STDMETHOD(Save)(IStream* pStream, BOOL bClearDirty) override 281 281 { 282 282 _Z4(atlTraceCOM, 4, _T("...\n")); 283 283 return m_pMoniker->Save(pStream, bClearDirty); 284 284 } 285 STDMETHOD(GetSizeMax)(ULARGE_INTEGER* pnMaximalSize) throw()285 STDMETHOD(GetSizeMax)(ULARGE_INTEGER* pnMaximalSize) override 286 286 { 287 287 _Z4(atlTraceCOM, 4, _T("...\n")); … … 290 290 291 291 // IMoniker 292 STDMETHOD(BindToObject)(IBindCtx* pBindCtx, IMoniker* pLeftMoniker, REFIID InterfaceIdentifier, VOID** ppvObject) throw()292 STDMETHOD(BindToObject)(IBindCtx* pBindCtx, IMoniker* pLeftMoniker, REFIID InterfaceIdentifier, VOID** ppvObject) override 293 293 { 294 294 _Z4(atlTraceCOM, 4, _T("pBindCtx 0x%p, pLeftMoniker 0x%p, InterfaceIdentifier %ls\n"), pBindCtx, pLeftMoniker, _PersistHelper::StringFromInterfaceIdentifier(InterfaceIdentifier)); … … 303 303 return S_OK; 304 304 } 305 STDMETHOD(BindToStorage)(IBindCtx* pBindCtx, IMoniker* pLeftMoniker, REFIID InterfaceIdentifier, VOID** ppvObject) throw()305 STDMETHOD(BindToStorage)(IBindCtx* pBindCtx, IMoniker* pLeftMoniker, REFIID InterfaceIdentifier, VOID** ppvObject) override 306 306 { 307 307 _Z4(atlTraceCOM, 4, _T("pBindCtx 0x%p, pLeftMoniker 0x%p, InterfaceIdentifier %ls\n"), pBindCtx, pLeftMoniker, _PersistHelper::StringFromInterfaceIdentifier(InterfaceIdentifier)); … … 327 327 return S_OK; 328 328 } 329 STDMETHOD(Reduce)(IBindCtx* pBindCtx, DWORD nDepth, IMoniker** ppLeftMoniker, IMoniker** ppReducedMoniker) throw()329 STDMETHOD(Reduce)(IBindCtx* pBindCtx, DWORD nDepth, IMoniker** ppLeftMoniker, IMoniker** ppReducedMoniker) override 330 330 { 331 331 _Z4(atlTraceCOM, 4, _T("...\n")); … … 340 340 return S_OK; 341 341 } 342 STDMETHOD(ComposeWith)(IMoniker* pRightMoniker, BOOL bOnlyIfNotGeneric, IMoniker** ppCompositeMoniker) throw()342 STDMETHOD(ComposeWith)(IMoniker* pRightMoniker, BOOL bOnlyIfNotGeneric, IMoniker** ppCompositeMoniker) override 343 343 { 344 344 _Z4(atlTraceCOM, 4, _T("...\n")); … … 353 353 return S_OK; 354 354 } 355 STDMETHOD(Enum)(BOOL bForward, IEnumMoniker** ppEnumMoniker) throw()355 STDMETHOD(Enum)(BOOL bForward, IEnumMoniker** ppEnumMoniker) override 356 356 { 357 357 _Z4(atlTraceCOM, 4, _T("bForward %d\n"), bForward); … … 366 366 return S_OK; 367 367 } 368 STDMETHOD(IsEqual)(IMoniker* pMoniker) throw()368 STDMETHOD(IsEqual)(IMoniker* pMoniker) override 369 369 { 370 370 _Z4(atlTraceCOM, 4, _T("...\n")); … … 379 379 return S_OK; 380 380 } 381 STDMETHOD(Hash)(DWORD* pnHashValue) throw()381 STDMETHOD(Hash)(DWORD* pnHashValue) override 382 382 { 383 383 _Z4(atlTraceCOM, 4, _T("...\n")); … … 392 392 return S_OK; 393 393 } 394 STDMETHOD(IsRunning)(IBindCtx* pBindCtx, IMoniker* pLeftMoniker, IMoniker* pNewlyRunning) throw()394 STDMETHOD(IsRunning)(IBindCtx* pBindCtx, IMoniker* pLeftMoniker, IMoniker* pNewlyRunning) override 395 395 { 396 396 _Z4(atlTraceCOM, 4, _T("...\n")); … … 405 405 return S_OK; 406 406 } 407 STDMETHOD(GetTimeOfLastChange)(IBindCtx* pBindCtx, IMoniker* pLeftMoniker, FILETIME* pFileTime) throw()407 STDMETHOD(GetTimeOfLastChange)(IBindCtx* pBindCtx, IMoniker* pLeftMoniker, FILETIME* pFileTime) override 408 408 { 409 409 _Z4(atlTraceCOM, 4, _T("...\n")); … … 418 418 return S_OK; 419 419 } 420 STDMETHOD(Inverse)(IMoniker** ppMoniker) throw()420 STDMETHOD(Inverse)(IMoniker** ppMoniker) override 421 421 { 422 422 _Z4(atlTraceCOM, 4, _T("...\n")); … … 431 431 return S_OK; 432 432 } 433 STDMETHOD(CommonPrefixWith)(IMoniker* pMoniker, IMoniker** ppPrefixMoniker) throw()433 STDMETHOD(CommonPrefixWith)(IMoniker* pMoniker, IMoniker** ppPrefixMoniker) override 434 434 { 435 435 _Z4(atlTraceCOM, 4, _T("...\n")); … … 444 444 return S_OK; 445 445 } 446 STDMETHOD(RelativePathTo)(IMoniker* pMoniker, IMoniker** ppRelativeMoniker) throw()446 STDMETHOD(RelativePathTo)(IMoniker* pMoniker, IMoniker** ppRelativeMoniker) override 447 447 { 448 448 _Z4(atlTraceCOM, 4, _T("...\n")); … … 457 457 return S_OK; 458 458 } 459 STDMETHOD(GetDisplayName)(IBindCtx* pBindCtx, IMoniker* pLeftMoniker, LPOLESTR* ppszDisplayName) throw()459 STDMETHOD(GetDisplayName)(IBindCtx* pBindCtx, IMoniker* pLeftMoniker, LPOLESTR* ppszDisplayName) override 460 460 { 461 461 _Z4(atlTraceCOM, 4, _T("pBindCtx 0x%p, pLeftMoniker 0x%p\n"), pBindCtx, pLeftMoniker); … … 464 464 const HRESULT nResult = m_pMoniker->GetDisplayName(pBindCtx, pLeftMoniker, ppszDisplayName); 465 465 if(SUCCEEDED(nResult)) 466 _Z4(atlTraceGeneral, 4, _T("nResult 0x%08 x, *ppszDisplayName %s\n"), nResult, CString(*ppszDisplayName));466 _Z4(atlTraceGeneral, 4, _T("nResult 0x%08X, *ppszDisplayName %s\n"), nResult, CString(*ppszDisplayName)); 467 467 else 468 _Z4(atlTraceGeneral, 4, _T("nResult 0x%08 x\n"), nResult);468 _Z4(atlTraceGeneral, 4, _T("nResult 0x%08X\n"), nResult); 469 469 return nResult; 470 470 } … … 475 475 return S_OK; 476 476 } 477 STDMETHOD(ParseDisplayName)(IBindCtx* pBindCtx, IMoniker* pLeftMoniker, LPOLESTR pszDisplayName, ULONG* pnEatenLength, IMoniker** ppOutputMoniker) throw()477 STDMETHOD(ParseDisplayName)(IBindCtx* pBindCtx, IMoniker* pLeftMoniker, LPOLESTR pszDisplayName, ULONG* pnEatenLength, IMoniker** ppOutputMoniker) override 478 478 { 479 479 _Z4(atlTraceCOM, 4, _T("pBindCtx 0x%p, pLeftMoniker 0x%p, pszDisplayName %s\n"), pBindCtx, pLeftMoniker, CString(pszDisplayName)); … … 488 488 return S_OK; 489 489 } 490 STDMETHOD(IsSystemMoniker)(DWORD* pnSystemMonikerType) throw()490 STDMETHOD(IsSystemMoniker)(DWORD* pnSystemMonikerType) override 491 491 { 492 492 _Z4(atlTraceCOM, 4, _T("...\n")); … … 539 539 540 540 // IEnumMoniker 541 STDMETHOD(Next)(ULONG nElementCount, IMoniker** ppMoniker, ULONG* pnFetch edElementCount) throw()541 STDMETHOD(Next)(ULONG nElementCount, IMoniker** ppMoniker, ULONG* pnFetchElementCount) override 542 542 { 543 543 _Z4(atlTraceCOM, 4, _T("nElementCount %d\n"), nElementCount); 544 544 _ATLTRY 545 545 { 546 const HRESULT nNextResult = m_pEnumMoniker->Next(nElementCount, ppMoniker, pnFetchedElementCount); 547 _Z4(atlTraceGeneral, 4, _T("nNextResult 0x%08x, *pnFetchedElementCount %s\n"), nNextResult, pnFetchedElementCount ? (LPCTSTR) AtlFormatString(_T("%d"), *pnFetchedElementCount) : _T("(null)")); 546 const HRESULT nNextResult = m_pEnumMoniker->Next(nElementCount, ppMoniker, pnFetchElementCount); 547 CRoArrayT<CString> Array; 548 if(pnFetchElementCount) 549 Array.Add(AtlFormatString(_T("*pnFetchElementCount %d"), *pnFetchElementCount)); 550 _Z4(atlTraceGeneral, 4, _T("nNextResult 0x%08X, %s\n"), nNextResult, _StringHelper::Join(Array, _T(", "))); 548 551 if(SUCCEEDED(nNextResult)) 549 552 { 550 553 ULONG nFetchedElementCount = nElementCount; 551 if(nNextResult != S_OK && pnFetch edElementCount)552 nFetchedElementCount = *pnFetch edElementCount;553 for( SIZE_TnIndex = 0; nIndex < nFetchedElementCount; nIndex++)554 if(nNextResult != S_OK && pnFetchElementCount) 555 nFetchedElementCount = *pnFetchElementCount; 556 for(ULONG nIndex = 0; nIndex < nFetchedElementCount; nIndex++) 554 557 { 555 558 CComPtr<IMoniker>& pMoniker = reinterpret_cast<CComPtr<IMoniker>&>(ppMoniker[nIndex]); … … 569 572 return S_OK; 570 573 } 571 STDMETHOD(Skip)(ULONG nElementCount) throw()574 STDMETHOD(Skip)(ULONG nElementCount) override 572 575 { 573 576 _Z4(atlTraceCOM, 4, _T("nElementCount %d\n"), nElementCount); … … 582 585 return S_OK; 583 586 } 584 STDMETHOD(Reset)() throw()587 STDMETHOD(Reset)() override 585 588 { 586 589 _Z4(atlTraceCOM, 4, _T("...\n")); … … 595 598 return S_OK; 596 599 } 597 STDMETHOD(Clone)(IEnumMoniker** ppEnumMoniker) throw()600 STDMETHOD(Clone)(IEnumMoniker** ppEnumMoniker) override 598 601 { 599 602 _Z4(atlTraceCOM, 4, _T("...\n")); … … 627 630 return S_OK; 628 631 } 629 static HRESULT WINAPI QuerySystemDeviceEnumInterface(VOID* pvInstance, REFIID InterfaceIdentifier, VOID** ppvObject, DWORD )632 static HRESULT WINAPI QuerySystemDeviceEnumInterface(VOID* pvInstance, REFIID InterfaceIdentifier, VOID** ppvObject, DWORD_PTR) 630 633 { 631 634 return ((CSystemDeviceEnumeratorSpy*) pvInstance)->QuerySystemDeviceEnumInterface(InterfaceIdentifier, ppvObject); … … 634 637 public: 635 638 // CSystemDeviceEnumeratorSpyT 636 static LPCTSTR GetOriginalLibraryName() throw()639 static LPCTSTR GetOriginalLibraryName() 637 640 { 638 641 return _T("devenum.dll"); … … 642 645 return _StringHelper::GetLine(T::IDR, 2); 643 646 } 644 static HRESULT WINAPI UpdateRegistry(BOOL bRegister) throw()647 static HRESULT WINAPI UpdateRegistry(BOOL bRegister) 645 648 { 646 649 _Z2(atlTraceRegistrar, 2, _T("bRegister %d\n"), bRegister); … … 655 658 return S_OK; 656 659 } 657 CSystemDeviceEnumeratorSpyT() throw():660 CSystemDeviceEnumeratorSpyT() : 658 661 m_hDevEnumModule(NULL) 659 662 { 660 663 _Z4_THIS(); 661 664 } 662 ~CSystemDeviceEnumeratorSpyT() throw()665 ~CSystemDeviceEnumeratorSpyT() 663 666 { 664 667 _Z4_THIS(); 665 668 } 666 HRESULT FinalConstruct() throw()669 HRESULT FinalConstruct() 667 670 { 668 671 _ATLTRY … … 670 673 TCHAR pszPath[MAX_PATH] = { 0 }; 671 674 _W(GetModuleFileName(NULL, pszPath, DIM(pszPath))); 672 _Z4(atlTraceRefcount, 4, _T("pszPath \"%s\", this 0x% 08x, m_dwRef %d\n"), pszPath, this, m_dwRef);675 _Z4(atlTraceRefcount, 4, _T("pszPath \"%s\", this 0x%p, m_dwRef %d\n"), pszPath, this, m_dwRef); 673 676 const HINSTANCE hModule = CoLoadLibrary(const_cast<LPOLESTR>((LPCOLESTR) CT2COLE(GetOriginalLibraryName())), TRUE); 674 677 _ATLTRY … … 704 707 return S_OK; 705 708 } 706 VOID FinalRelease() throw()707 { 708 _Z5(atlTraceRefcount, 5, _T("m_dwRef 0x% x\n"), m_dwRef);709 m_pSystemDeviceEnum = NULL;710 m_pCreateDevEnum = NULL;709 VOID FinalRelease() 710 { 711 _Z5(atlTraceRefcount, 5, _T("m_dwRef 0x%X\n"), m_dwRef); 712 m_pSystemDeviceEnum.Release(); 713 m_pCreateDevEnum.Release(); 711 714 if(m_hDevEnumModule) 712 715 { … … 717 720 static CString FormatDeviceCategory(const GUID& DeviceCategory) 718 721 { 719 static const struct { const GUID* pIdentifier; LPCSTR pszName; } g_pMap[] = 722 static const struct 723 { 724 const GUID* pIdentifier; 725 LPCSTR pszName; 726 } g_pMap[] = 720 727 { 721 728 #define A(x) { &x, #x }, … … 735 742 #undef A 736 743 }; 737 for( SIZE_T nIndex = 0; nIndex < DIM(g_pMap); nIndex++)738 if(* g_pMap[nIndex].pIdentifier == DeviceCategory)739 return CString( g_pMap[nIndex].pszName);744 for(auto&& Item: g_pMap) 745 if(*Item.pIdentifier == DeviceCategory) 746 return CString(Item.pszName); 740 747 return CString(_PersistHelper::StringFromIdentifier(DeviceCategory)); 741 748 } … … 744 751 745 752 // ICreateDevEnum 746 STDMETHOD(CreateClassEnumerator)(REFCLSID DeviceCategory, IEnumMoniker** ppEnumMoniker, DWORD nFlags) throw()747 { 748 _Z4(atlTraceCOM, 4, _T("DeviceCategory %s, nFlags 0x% x\n"), FormatDeviceCategory(DeviceCategory), nFlags);753 STDMETHOD(CreateClassEnumerator)(REFCLSID DeviceCategory, IEnumMoniker** ppEnumMoniker, DWORD nFlags) override 754 { 755 _Z4(atlTraceCOM, 4, _T("DeviceCategory %s, nFlags 0x%X\n"), FormatDeviceCategory(DeviceCategory), nFlags); 749 756 _ATLTRY 750 757 { 751 __C(m_pCreateDevEnum->CreateClassEnumerator(DeviceCategory, ppEnumMoniker, nFlags)); 758 const HRESULT nCreateClassEnumeratorResult = m_pCreateDevEnum->CreateClassEnumerator(DeviceCategory, ppEnumMoniker, nFlags); 759 __C(nCreateClassEnumeratorResult); 760 _D(nCreateClassEnumeratorResult == S_OK, nCreateClassEnumeratorResult); 752 761 CComPtr<IEnumMoniker>& pEnumMoniker = reinterpret_cast<CComPtr<IEnumMoniker>&>(*ppEnumMoniker); 753 762 if(pEnumMoniker) 754 763 { 755 #pragma region Trace Moniker s764 #pragma region Trace Moniker 756 765 __C(pEnumMoniker->Reset()); 757 CComPtr<IMoniker> pMoniker; 758 while(pEnumMoniker->Next(1, &pMoniker, NULL) == S_OK) 766 for(; ; ) 759 767 { 760 _Z4(atlTraceCOM, 4, _T("pMoniker %ls\n"), _FilterGraphHelper::GetMonikerDisplayName(pMoniker)); 768 CComPtr<IMoniker> pMoniker; 769 ULONG nElementCount; 770 if(pEnumMoniker->Next(1, &pMoniker, &nElementCount) != S_OK) 771 break; 772 _Z4(atlTraceGeneral, 4, _T("pMoniker %ls\n"), _FilterGraphHelper::GetMonikerDisplayName(pMoniker)); 761 773 CComPtr<IBindCtx> pBindCtx; 762 774 __C(CreateBindCtx(0, &pBindCtx)); … … 767 779 const CStringW sDevicePath = _FilterGraphHelper::ReadPropertyBagString(pPropertyBag, OLESTR("DevicePath")); 768 780 _Z4(atlTraceCOM, 4, _T("sFriendlyName \"%ls\", sDescription \"%ls\", sDevicePath \"%ls\"\n"), sFriendlyName, sDescription, sDevicePath); 769 pMoniker.Release();770 781 } 771 782 __C(pEnumMoniker->Reset());
Note: See TracChangeset
for help on using the changeset viewer.