Changeset 617
- Timestamp:
- Apr 17, 2016, 8:30:44 AM (7 years ago)
- Location:
- trunk/DirectShowSpy
- Files:
-
- 5 added
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/DirectShowSpy/Common.h
r569 r617 632 632 }; 633 633 634 #if defined(DIRECTSHOWSPY) 635 636 //////////////////////////////////////////////////////////// 637 // CModuleVersionInformationT 638 639 template <typename T> 640 class ATL_NO_VTABLE CModuleVersionInformationT : 641 public IDispatchImpl<IModuleVersionInformation> 642 { 643 public: 644 // CModuleVersionInformationT 645 646 // IModuleVersionInformation 647 STDMETHOD(get_Path)(BSTR* psPath) override 648 { 649 _Z4(atlTraceCOM, 4, _T("this 0x%p\n"), static_cast<T*>(this)); 650 _ATLTRY 651 { 652 __D(psPath, E_POINTER); 653 *psPath = CComBSTR(_VersionInfoHelper::GetModulePath()).Detach(); 654 } 655 _ATLCATCH(Exception) 656 { 657 _C(Exception); 658 } 659 return S_OK; 660 } 661 STDMETHOD(get_FileVersion)(LONGLONG* pnFileVersion) override 662 { 663 _Z4(atlTraceCOM, 4, _T("this 0x%p\n"), static_cast<T*>(this)); 664 _ATLTRY 665 { 666 __D(pnFileVersion, E_POINTER); 667 *pnFileVersion = (LONGLONG) _VersionInfoHelper::GetFileVersion(_VersionInfoHelper::GetModulePath()); 668 } 669 _ATLCATCH(Exception) 670 { 671 _C(Exception); 672 } 673 return S_OK; 674 } 675 STDMETHOD(get_FileVersionString)(BSTR* psFileVersionString) override 676 { 677 _Z4(atlTraceCOM, 4, _T("this 0x%p\n"), static_cast<T*>(this)); 678 _ATLTRY 679 { 680 __D(psFileVersionString, E_POINTER); 681 *psFileVersionString = CComBSTR(_VersionInfoHelper::GetVersionString(_VersionInfoHelper::GetFileVersion(_VersionInfoHelper::GetModulePath()))).Detach(); 682 } 683 _ATLCATCH(Exception) 684 { 685 _C(Exception); 686 } 687 return S_OK; 688 } 689 }; 690 691 #endif // defined(DIRECTSHOWSPY) 692 634 693 //////////////////////////////////////////////////////////// 635 694 // DIRECTSHOWSPY_NAMESPACE_PREFIX -
trunk/DirectShowSpy/Configuration.cpp
r432 r617 26 26 extern "C" __declspec(dllexport) 27 27 #else 28 #pragma comment(linker, "/EXPORT:UnregisterTreatAsClasses=_UnregisterTreatAsClasses@ 0,PRIVATE")28 #pragma comment(linker, "/EXPORT:UnregisterTreatAsClasses=_UnregisterTreatAsClasses@16,PRIVATE") 29 29 extern "C" // __declspec(dllexport) 30 30 #endif // defined(_WIN64) 31 31 32 HRESULT STDMETHODCALLTYPE UnregisterTreatAsClasses( ) throw()32 HRESULT STDMETHODCALLTYPE UnregisterTreatAsClasses(HWND hParentWindow, HINSTANCE, LPSTR pszCommandLine, INT nShowCommand) 33 33 { 34 hParentWindow; pszCommandLine; nShowCommand; 34 35 _ATLTRY 35 36 { … … 97 98 extern "C" __declspec(dllexport) 98 99 #else 99 #pragma comment(linker, "/EXPORT:DoRegistrationPropertySheetModal=_DoRegistrationPropertySheetModal@ 0,PRIVATE")100 #pragma comment(linker, "/EXPORT:DoRegistrationPropertySheetModal=_DoRegistrationPropertySheetModal@16,PRIVATE") 100 101 extern "C" // __declspec(dllexport) 101 102 #endif // defined(_WIN64) 102 103 103 HRESULT STDMETHODCALLTYPE DoRegistrationPropertySheetModal( ) throw()104 HRESULT STDMETHODCALLTYPE DoRegistrationPropertySheetModal(HWND hParentWindow, HINSTANCE, LPSTR pszCommandLine, INT nShowCommand) 104 105 { 106 hParentWindow; pszCommandLine; nShowCommand; 105 107 _ATLTRY 106 108 { -
trunk/DirectShowSpy/DirectShowSpy.sln
r438 r617 2 2 Microsoft Visual Studio Solution File, Format Version 12.00 3 3 # Visual Studio 2013 4 VisualStudioVersion = 12.0.40629.0 5 MinimumVisualStudioVersion = 10.0.40219.1 4 6 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DirectShowSpy", "DirectShowSpy.vcxproj", "{1A5DA4E5-ED09-476A-9A42-538D0DDA3FB9}" 5 7 EndProject 6 8 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DirectShowSpyPS", "DirectShowSpyPS.vcxproj", "{E0A3323D-478E-4046-909A-AD12AD399A68}" 9 EndProject 10 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Host01", "Host01\Host01.vcxproj", "{02A667BA-1492-4BDD-88A4-819AB1CA351B}" 11 ProjectSection(ProjectDependencies) = postProject 12 {1A5DA4E5-ED09-476A-9A42-538D0DDA3FB9} = {1A5DA4E5-ED09-476A-9A42-538D0DDA3FB9} 13 EndProjectSection 7 14 EndProject 8 15 Global … … 32 39 {E0A3323D-478E-4046-909A-AD12AD399A68}.Release|Win32.ActiveCfg = Release|Win32 33 40 {E0A3323D-478E-4046-909A-AD12AD399A68}.Release|x64.ActiveCfg = Release|Win32 41 {02A667BA-1492-4BDD-88A4-819AB1CA351B}.Debug|Win32.ActiveCfg = Debug|Win32 42 {02A667BA-1492-4BDD-88A4-819AB1CA351B}.Debug|Win32.Build.0 = Debug|Win32 43 {02A667BA-1492-4BDD-88A4-819AB1CA351B}.Debug|x64.ActiveCfg = Debug|x64 44 {02A667BA-1492-4BDD-88A4-819AB1CA351B}.Debug|x64.Build.0 = Debug|x64 45 {02A667BA-1492-4BDD-88A4-819AB1CA351B}.Release Trace|Win32.ActiveCfg = Release|Win32 46 {02A667BA-1492-4BDD-88A4-819AB1CA351B}.Release Trace|Win32.Build.0 = Release|Win32 47 {02A667BA-1492-4BDD-88A4-819AB1CA351B}.Release Trace|x64.ActiveCfg = Release|x64 48 {02A667BA-1492-4BDD-88A4-819AB1CA351B}.Release Trace|x64.Build.0 = Release|x64 49 {02A667BA-1492-4BDD-88A4-819AB1CA351B}.Release|Win32.ActiveCfg = Release|Win32 50 {02A667BA-1492-4BDD-88A4-819AB1CA351B}.Release|Win32.Build.0 = Release|Win32 51 {02A667BA-1492-4BDD-88A4-819AB1CA351B}.Release|x64.ActiveCfg = Release|x64 52 {02A667BA-1492-4BDD-88A4-819AB1CA351B}.Release|x64.Build.0 = Release|x64 34 53 EndGlobalSection 35 54 GlobalSection(SolutionProperties) = preSolution -
trunk/DirectShowSpy/FilterGraphHelper.h
r440 r617 29 29 HRESULT FilterGraphHelper_OpenGraphStudioNext(LONG nParentWindowHandle, LPCWSTR pszMonikerDisplayName, VARIANT_BOOL* pbResult); 30 30 HRESULT FilterGraphHelper_OpenGraphEdit(LONG nParentWindowHandle, LPCWSTR pszMonikerDisplayName, VARIANT_BOOL* pbResult); 31 32 VOID MediaSampleTrace_Reset(DWORD nProcessIdentifier); 33 CString MediaSampleTrace_Get(DWORD nProcessIdentifier); 34 CComPtr<IUnknown> MediaSampleTrace_Lock(); 31 35 32 36 //////////////////////////////////////////////////////////// … … 464 468 public CComCoClass<CFilterGraphHelper, &__uuidof(FilterGraphHelper)>, 465 469 public IProvideClassInfo2Impl<&__uuidof(FilterGraphHelper), &IID_NULL>, 466 public IDispatchImpl<IFilterGraphHelper> 470 public IDispatchImpl<IFilterGraphHelper>, 471 public CModuleVersionInformationT<CFilterGraphHelper> 467 472 { 468 473 public: … … 472 477 473 478 BEGIN_COM_MAP(CFilterGraphHelper) 474 COM_INTERFACE_ENTRY(IFilterGraphHelper)475 COM_INTERFACE_ENTRY(IDispatch)476 479 COM_INTERFACE_ENTRY(IProvideClassInfo2) 477 480 COM_INTERFACE_ENTRY(IProvideClassInfo) 481 COM_INTERFACE_ENTRY(IFilterGraphHelper) 482 COM_INTERFACE_ENTRY_IID(__uuidof(IDispatch), IFilterGraphHelper) 483 COM_INTERFACE_ENTRY(IModuleVersionInformation) 478 484 END_COM_MAP() 479 485 … … 3752 3758 3753 3759 // IFilterGraphHelper 3754 STDMETHOD(get_FilterGraph)(IUnknown** ppFilterGraphUnknown) 3760 STDMETHOD(get_FilterGraph)(IUnknown** ppFilterGraphUnknown) override 3755 3761 { 3756 3762 _Z4(atlTraceCOM, 4, _T("...\n")); … … 3766 3772 return S_OK; 3767 3773 } 3768 STDMETHOD(put_FilterGraph)(IUnknown* pFilterGraphUnknown) 3774 STDMETHOD(put_FilterGraph)(IUnknown* pFilterGraphUnknown) override 3769 3775 { 3770 3776 _Z4(atlTraceCOM, 4, _T("pFilterGraphUnknown 0x%p\n"), pFilterGraphUnknown); … … 3780 3786 return S_OK; 3781 3787 } 3782 STDMETHOD(get_Text)(BSTR* psText) 3788 STDMETHOD(get_Text)(BSTR* psText) override 3783 3789 { 3784 3790 _Z4(atlTraceCOM, 4, _T("...\n")); … … 3795 3801 return S_OK; 3796 3802 } 3797 STDMETHOD(DoPropertyFrameModal)(LONG nParentWindowHandle) 3803 STDMETHOD(DoPropertyFrameModal)(LONG nParentWindowHandle) override 3798 3804 { 3799 3805 _Z4(atlTraceCOM, 4, _T("nParentWindowHandle 0x%08X\n"), nParentWindowHandle); … … 3815 3821 return S_OK; 3816 3822 } 3817 STDMETHOD(DoFilterGraphListModal)(LONG nParentWindowHandle) 3823 STDMETHOD(DoFilterGraphListModal)(LONG nParentWindowHandle) override 3818 3824 { 3819 3825 _Z4(atlTraceCOM, 4, _T("nParentWindowHandle 0x%08X\n"), nParentWindowHandle); … … 3832 3838 return S_OK; 3833 3839 } 3834 STDMETHOD(OpenGraphStudioNext)(LONG nParentWindowHandle, BSTR sMonikerDisplayName, VARIANT_BOOL* pbResult) 3840 STDMETHOD(OpenGraphStudioNext)(LONG nParentWindowHandle, BSTR sMonikerDisplayName, VARIANT_BOOL* pbResult) override 3835 3841 { 3836 3842 _Z4(atlTraceCOM, 4, _T("nParentWindowHandle 0x%08X, sMonikerDisplayName \"%s\"\n"), nParentWindowHandle, CString(sMonikerDisplayName)); … … 3852 3858 return S_OK; 3853 3859 } 3854 STDMETHOD(OpenGraphEdit)(LONG nParentWindowHandle, BSTR sMonikerDisplayName, VARIANT_BOOL* pbResult) 3860 STDMETHOD(OpenGraphEdit)(LONG nParentWindowHandle, BSTR sMonikerDisplayName, VARIANT_BOOL* pbResult) override 3855 3861 { 3856 3862 _Z4(atlTraceCOM, 4, _T("nParentWindowHandle 0x%08X, sMonikerDisplayName \"%s\"\n"), nParentWindowHandle, CString(sMonikerDisplayName)); … … 3872 3878 return S_OK; 3873 3879 } 3874 STDMETHOD(get_Options)(VARIANT* pvOptions) 3875 { 3876 _Z4(atlTraceCOM, 4, _T(" ...\n"));3880 STDMETHOD(get_Options)(VARIANT* pvOptions) override 3881 { 3882 _Z4(atlTraceCOM, 4, _T("this 0x%p\n"), this); 3877 3883 _ATLTRY 3878 3884 { … … 3887 3893 return S_OK; 3888 3894 } 3889 STDMETHOD(put_Options)(VARIANT vOptions) 3890 { 3891 _Z4(atlTraceCOM, 4, _T(" vOptions.vt 0x%X\n"), vOptions.vt);3895 STDMETHOD(put_Options)(VARIANT vOptions) override 3896 { 3897 _Z4(atlTraceCOM, 4, _T("this 0x%p, vOptions.vt %s\n"), this, reinterpret_cast<CComVariantArray&>(vOptions).FormatType()); 3892 3898 _ATLTRY 3893 3899 { 3894 3900 m_Options.SetVariant(vOptions); 3901 } 3902 _ATLCATCH(Exception) 3903 { 3904 _C(Exception); 3905 } 3906 return S_OK; 3907 } 3908 STDMETHOD(ResetMediaSampleTrace)(VARIANT vProcessIdentifier) override 3909 { 3910 _Z4(atlTraceCOM, 4, _T("this 0x%p, vProcessIdentifier %s\n"), this, reinterpret_cast<CComVariantArray&>(vProcessIdentifier).Format(TRUE)); 3911 _ATLTRY 3912 { 3913 DWORD nProcessIdentifier = 0; 3914 if(vProcessIdentifier.vt > VT_NULL) 3915 nProcessIdentifier = (DWORD) reinterpret_cast<CComVariantArray&>(vProcessIdentifier).GetAsType(VT_I4).lVal; 3916 MediaSampleTrace_Reset(nProcessIdentifier); 3917 } 3918 _ATLCATCH(Exception) 3919 { 3920 _C(Exception); 3921 } 3922 return S_OK; 3923 } 3924 STDMETHOD(LockMediaSampleTrace)(IUnknown** ppLockUnknown) override 3925 { 3926 _Z4(atlTraceCOM, 4, _T("this 0x%p\n"), this); 3927 _ATLTRY 3928 { 3929 __D(ppLockUnknown, E_POINTER); 3930 *ppLockUnknown = MediaSampleTrace_Lock().Detach(); 3931 } 3932 _ATLCATCH(Exception) 3933 { 3934 _C(Exception); 3935 } 3936 return S_OK; 3937 } 3938 STDMETHOD(GetMediaSampleTrace)(VARIANT vProcessIdentifier, BSTR* psText) override 3939 { 3940 _Z4(atlTraceCOM, 4, _T("this 0x%p, vProcessIdentifier %s\n"), this, reinterpret_cast<CComVariantArray&>(vProcessIdentifier).Format(TRUE)); 3941 _ATLTRY 3942 { 3943 __D(psText, E_POINTER); 3944 DWORD nProcessIdentifier = 0; 3945 if(vProcessIdentifier.vt > VT_NULL) 3946 nProcessIdentifier = (DWORD) reinterpret_cast<CComVariantArray&>(vProcessIdentifier).GetAsType(VT_I4).lVal; 3947 *psText = CComBSTR(MediaSampleTrace_Get(nProcessIdentifier)).Detach(); 3895 3948 } 3896 3949 _ATLCATCH(Exception) -
trunk/DirectShowSpy/FilterGraphSpy.cpp
r569 r617 28 28 extern "C" __declspec(dllexport) 29 29 #else 30 #pragma comment(linker, "/EXPORT:DoGraphBuilderCallbackPropertySheetModal=_DoGraphBuilderCallbackPropertySheetModal@ 0,PRIVATE")30 #pragma comment(linker, "/EXPORT:DoGraphBuilderCallbackPropertySheetModal=_DoGraphBuilderCallbackPropertySheetModal@16,PRIVATE") 31 31 extern "C" // __declspec(dllexport) 32 32 #endif // defined(_WIN64) 33 33 34 HRESULT STDMETHODCALLTYPE DoGraphBuilderCallbackPropertySheetModal( )34 HRESULT STDMETHODCALLTYPE DoGraphBuilderCallbackPropertySheetModal(HWND hParentWindow, HINSTANCE, LPSTR pszCommandLine, INT nShowCommand) 35 35 { 36 hParentWindow; pszCommandLine; nShowCommand; 36 37 _ATLTRY 37 38 { … … 56 57 extern "C" __declspec(dllexport) 57 58 #else 58 #pragma comment(linker, "/EXPORT:DoFilterGraphListPropertySheetModal=_DoFilterGraphListPropertySheetModal@ 0,PRIVATE")59 #pragma comment(linker, "/EXPORT:DoFilterGraphListPropertySheetModal=_DoFilterGraphListPropertySheetModal@16,PRIVATE") 59 60 extern "C" // __declspec(dllexport) 60 61 #endif // defined(_WIN64) 61 62 62 HRESULT STDMETHODCALLTYPE DoFilterGraphListPropertySheetModal( )63 HRESULT STDMETHODCALLTYPE DoFilterGraphListPropertySheetModal(HWND hParentWindow, HINSTANCE, LPSTR pszCommandLine, INT nShowCommand) 63 64 { 65 hParentWindow; pszCommandLine; nShowCommand; 64 66 _ATLTRY 65 67 { … … 84 86 extern "C" __declspec(dllexport) 85 87 #else 86 #pragma comment(linker, "/EXPORT:DoMediaSampleTracePropertySheetModal=_DoMediaSampleTracePropertySheetModal@ 0,PRIVATE")88 #pragma comment(linker, "/EXPORT:DoMediaSampleTracePropertySheetModal=_DoMediaSampleTracePropertySheetModal@16,PRIVATE") 87 89 extern "C" // __declspec(dllexport) 88 90 #endif // defined(_WIN64) 89 91 90 HRESULT STDMETHODCALLTYPE DoMediaSampleTracePropertySheetModal( )92 HRESULT STDMETHODCALLTYPE DoMediaSampleTracePropertySheetModal(HWND hParentWindow, HINSTANCE, LPSTR pszCommandLine, INT nShowCommand) 91 93 { 94 hParentWindow; pszCommandLine; nShowCommand; 92 95 _ATLTRY 93 96 { … … 113 116 HRESULT STDMETHODCALLTYPE DoMediaSampleTraceTasks(HWND hParentWindow, HINSTANCE, LPSTR pszCommandLine, INT nShowCommand) 114 117 { 118 hParentWindow; pszCommandLine; nShowCommand; 115 119 _ATLTRY 116 120 { -
trunk/DirectShowSpy/FilterGraphSpy.h
r608 r617 25 25 HRESULT FilterGraphHelper_OpenGraphStudioNext(LONG nParentWindowHandle, LPCWSTR pszMonikerDisplayName, VARIANT_BOOL* pbResult); 26 26 HRESULT FilterGraphHelper_OpenGraphEdit(LONG nParentWindowHandle, LPCWSTR pszMonikerDisplayName, VARIANT_BOOL* pbResult); 27 28 ////////////////////////////////////////////////////////////29 // CModuleVersionInformationT30 31 template <typename T>32 class ATL_NO_VTABLE CModuleVersionInformationT :33 public IDispatchImpl<IModuleVersionInformation>34 {35 public:36 // CModuleVersionInformationT37 38 // IModuleVersionInformation39 STDMETHOD(get_Path)(BSTR* psPath)40 {41 _Z4(atlTraceCOM, 4, _T("...\n"));42 _ATLTRY43 {44 __D(psPath, E_POINTER);45 *psPath = CComBSTR(_VersionInfoHelper::GetModulePath()).Detach();46 }47 _ATLCATCH(Exception)48 {49 _C(Exception);50 }51 return S_OK;52 }53 STDMETHOD(get_FileVersion)(LONGLONG* pnFileVersion)54 {55 _Z4(atlTraceCOM, 4, _T("...\n"));56 _ATLTRY57 {58 __D(pnFileVersion, E_POINTER);59 *pnFileVersion = (LONGLONG) _VersionInfoHelper::GetFileVersion(_VersionInfoHelper::GetModulePath());60 }61 _ATLCATCH(Exception)62 {63 _C(Exception);64 }65 return S_OK;66 }67 STDMETHOD(get_FileVersionString)(BSTR* psFileVersionString)68 {69 _Z4(atlTraceCOM, 4, _T("...\n"));70 _ATLTRY71 {72 __D(psFileVersionString, E_POINTER);73 *psFileVersionString = CComBSTR(_VersionInfoHelper::GetVersionString(_VersionInfoHelper::GetFileVersion(_VersionInfoHelper::GetModulePath()))).Detach();74 }75 _ATLCATCH(Exception)76 {77 _C(Exception);78 }79 return S_OK;80 }81 };82 27 83 28 //////////////////////////////////////////////////////////// -
trunk/DirectShowSpy/Helper.cpp
r503 r617 30 30 extern "C" __declspec(dllexport) 31 31 #else 32 #pragma comment(linker, "/EXPORT:Test=_Test@ 0,PRIVATE")32 #pragma comment(linker, "/EXPORT:Test=_Test@16,PRIVATE") 33 33 extern "C" // __declspec(dllexport) 34 34 #endif // defined(_WIN64) 35 35 36 HRESULT STDMETHODCALLTYPE Test( )36 HRESULT STDMETHODCALLTYPE Test(HWND hParentWindow, HINSTANCE, LPSTR pszCommandLine, INT nShowCommand) 37 37 { 38 hParentWindow; pszCommandLine; nShowCommand; 38 39 _ATLTRY 39 40 { … … 221 222 extern "C" __declspec(dllexport) 222 223 #else 223 #pragma comment(linker, "/EXPORT:Test=_Test@ 0,PRIVATE")224 #pragma comment(linker, "/EXPORT:Test=_Test@16,PRIVATE") 224 225 extern "C" // __declspec(dllexport) 225 226 #endif // defined(_WIN64) 226 227 227 HRESULT STDMETHODCALLTYPE Test( )228 HRESULT STDMETHODCALLTYPE Test(HWND hParentWindow, HINSTANCE, LPSTR pszCommandLine, INT nShowCommand) 228 229 { 230 hParentWindow; pszCommandLine; nShowCommand; 229 231 _ATLTRY 230 232 { … … 275 277 extern "C" __declspec(dllexport) 276 278 #else 277 #pragma comment(linker, "/EXPORT:Test=_Test@ 0,PRIVATE")279 #pragma comment(linker, "/EXPORT:Test=_Test@16,PRIVATE") 278 280 extern "C" // __declspec(dllexport) 279 281 #endif // defined(_WIN64) 280 282 281 HRESULT STDMETHODCALLTYPE Test( )283 HRESULT STDMETHODCALLTYPE Test(HWND hParentWindow, HINSTANCE, LPSTR pszCommandLine, INT nShowCommand) 282 284 { 285 hParentWindow; pszCommandLine; nShowCommand; 283 286 _ATLTRY 284 287 { -
trunk/DirectShowSpy/MediaSampleTrace.h
r569 r617 1 1 //////////////////////////////////////////////////////////// 2 // Copyright (C) Roman Ryltsov, 2008-201 52 // Copyright (C) Roman Ryltsov, 2008-2016 3 3 // Created by Roman Ryltsov roman@alax.info, http://alax.info 4 4 // … … 21 21 #include "FilterGraphHelper.h" 22 22 #include "FilterGraphList.h" 23 24 VOID MediaSampleTrace_Reset(DWORD nProcessIdentifier); 25 CString MediaSampleTrace_Get(DWORD nProcessIdentifier); 26 CComPtr<IUnknown> MediaSampleTrace_Lock(); 23 27 24 28 //////////////////////////////////////////////////////////// … … 556 560 }; 557 561 562 //////////////////////////////////////////////////////// 563 // CHandleMapLock 564 565 class ATL_NO_VTABLE CHandleMapLock : 566 public CComObjectRootEx<CComMultiThreadModelNoCS>, 567 public IUnknown 568 { 569 typedef CThreadT<CHandleMapLock> CThread; 570 571 public: 572 573 DECLARE_PROTECT_FINAL_CONSTRUCT() 574 575 BEGIN_COM_MAP(CHandleMapLock) 576 END_COM_MAP() 577 578 private: 579 CData m_Data; 580 CObjectPtr<CThread> m_pThread; 581 CHandleMap m_HandleMap; 582 583 DWORD ThreadProc(CThread*, CEvent& InitializationEvent, CEvent& TerminationEvent) 584 { 585 CMultiThreadedApartment Apartment; 586 CEvent RequestEvent, ResponseEvent; 587 _W(RequestEvent.Create(NULL, FALSE, FALSE, CString(CPages::GetFileMappingName()) + _T(".TransferRequest"))); 588 _W(ResponseEvent.Create(NULL, FALSE, FALSE, CString(CPages::GetFileMappingName()) + _T(".TransferResponse"))); 589 _W(InitializationEvent.Set()); 590 if(!RequestEvent || !ResponseEvent) 591 return 0; 592 CStackPointer StackPointer; 593 const HANDLE phObjects[] = { TerminationEvent, RequestEvent }; 594 for(; ; ) 595 { 596 _A(StackPointer.Check()); StackPointer; 597 const DWORD nWaitResult = WaitForMultipleObjects(DIM(phObjects), phObjects, FALSE, INFINITE); 598 _Z4_WAITRESULT(nWaitResult); 599 _A(nWaitResult - WAIT_OBJECT_0 < DIM(phObjects)); 600 if(nWaitResult != WAIT_OBJECT_0 + 1) // RequestEvent 601 break; 602 CPages Pages; 603 if(Pages.Initialize()) 604 Pages.GetData(m_Data, &m_HandleMap); 605 _W(ResponseEvent.Set()); 606 } 607 return 0; 608 } 609 610 public: 611 // CHandleMapLock 612 CHandleMapLock() 613 { 614 _Z4_THIS(); 615 } 616 ~CHandleMapLock() 617 { 618 _Z4_THIS(); 619 } 620 HRESULT FinalConstruct() 621 { 622 _ATLTRY 623 { 624 m_pThread.Construct()->Initialize(this, &CHandleMapLock::ThreadProc); 625 } 626 _ATLCATCH(Exception) 627 { 628 _C(Exception); 629 } 630 return S_OK; 631 } 632 VOID FinalRelease() 633 { 634 m_pThread.Release(); 635 } 636 }; 637 558 638 public: 559 639 // CMediaSampleTraceBase … … 879 959 public CCustomDraw<CMediaSamplePropertyPage> 880 960 { 881 typedef CThreadT<CMediaSamplePropertyPage> CThread;882 883 961 public: 884 962 enum { IDD = IDD_MEDIASAMPLETRACE_MEDIASAMPLE_PROPERTYPAGE }; … … 897 975 COMMAND_ID_HANDLER_EX(IDC_MEDIASAMPLETRACE_MEDIASAMPLE_COPYTOCLIPBOARD, OnCopyToClipboard) 898 976 COMMAND_ID_HANDLER_EX(IDC_MEDIASAMPLETRACE_MEDIASAMPLE_SAVETOFILE, OnSaveToFile) 977 COMMAND_ID_HANDLER_EX(IDC_MEDIASAMPLETRACE_MEDIASAMPLE_LOADFROMFILE, OnLoadFromFile) 899 978 COMMAND_ID_HANDLER_EX(IDC_MEDIASAMPLETRACE_MEDIASAMPLE_RESETDATA, OnResetData) 900 979 COMMAND_ID_HANDLER_EX(IDC_MEDIASAMPLETRACE_MEDIASAMPLE_OPENFILTERGRAPHLIST, OnOpenFilterGraphList) … … 912 991 DLGRESIZE_CONTROL(IDC_MEDIASAMPLETRACE_MEDIASAMPLE_COPYTOCLIPBOARD, DLSZ_MOVE_Y) 913 992 DLGRESIZE_CONTROL(IDC_MEDIASAMPLETRACE_MEDIASAMPLE_SAVETOFILE, DLSZ_MOVE_Y) 993 DLGRESIZE_CONTROL(IDC_MEDIASAMPLETRACE_MEDIASAMPLE_LOADFROMFILE, DLSZ_MOVE_Y) 914 994 END_DLGRESIZE_MAP() 915 995 … … 1234 1314 CRoHyperStatic m_CopyToClipboardStatic; 1235 1315 CRoHyperStatic m_SaveToFileStatic; 1316 CRoHyperStatic m_LoadFromFileStatic; 1236 1317 CFilterDialog m_FilterDialog; 1237 1318 CRoMapT<INT, BOOL> m_ChangeMap; 1238 1319 CData m_Data; 1239 CObjectPtr<CThread> m_pThread;1240 1320 CHandleMap m_HandleMap; 1241 1242 DWORD ThreadProc(CThread*, CEvent& InitializationEvent, CEvent& TerminationEvent) 1243 { 1244 CMultiThreadedApartment Apartment; 1245 CEvent RequestEvent, ResponseEvent; 1246 _W(RequestEvent.Create(NULL, FALSE, FALSE, CString(CPages::GetFileMappingName()) + _T(".TransferRequest"))); 1247 _W(ResponseEvent.Create(NULL, FALSE, FALSE, CString(CPages::GetFileMappingName()) + _T(".TransferResponse"))); 1248 _W(InitializationEvent.Set()); 1249 if(!RequestEvent || !ResponseEvent) 1250 return 0; 1251 CStackPointer StackPointer; 1252 const HANDLE phObjects[] = { TerminationEvent, RequestEvent }; 1253 for(; ; ) 1254 { 1255 _A(StackPointer.Check()); StackPointer; 1256 const DWORD nWaitResult = WaitForMultipleObjects(DIM(phObjects), phObjects, FALSE, INFINITE); 1257 _Z4_WAITRESULT(nWaitResult); 1258 _A(nWaitResult - WAIT_OBJECT_0 < DIM(phObjects)); 1259 if(nWaitResult != WAIT_OBJECT_0 + 1) // RequestEvent 1260 break; 1261 CPages Pages; 1262 if(Pages.Initialize()) 1263 Pages.GetData(m_Data, &m_HandleMap); 1264 _W(ResponseEvent.Set()); 1265 } 1266 return 0; 1267 } 1321 CObjectPtr<CHandleMapLock> m_pHandleMapLock; 1268 1322 1269 1323 public: … … 1281 1335 CWindowRedraw ListViewRedraw(m_ListView); 1282 1336 m_ListView.DeleteAllItems(); 1283 m_Data.Initialize(); 1284 CPages Pages; 1285 if(Pages.Initialize()) 1286 { 1287 Pages.GetData(m_Data, &m_HandleMap); 1288 m_Data.Sort(); 1289 INT nItem = 0; 1290 for(auto&& Item: m_Data.m_ItemArray) 1291 m_ListView.InsertItem(nItem++, Item); 1337 if(m_pHandleMapLock) // Live vs. File Source 1338 { 1339 m_Data.Initialize(); 1340 CPages Pages; 1341 if(Pages.Initialize()) 1342 { 1343 Pages.GetData(m_Data, &m_HandleMap); 1344 m_Data.Sort(); 1345 INT nItem = 0; 1346 for(auto&& Item: m_Data.m_ItemArray) 1347 m_ListView.InsertItem(nItem++, Item); 1348 } 1292 1349 } 1293 1350 m_FilterDialog.Reset(); … … 1317 1374 for(INT nItem = 0; nItem < m_ListView.GetItemCount(); nItem++) 1318 1375 sText += CreateDataItemText(m_ListView.GetItemData(nItem)); 1319 return CStringA(sText);1376 return Utf8StringFromString(sText); 1320 1377 } 1321 1378 VOID HandleFilterUpdate() … … 1328 1385 m_ListView.InsertItem(nItem++, Item); 1329 1386 // SUGG: Preserve selection 1387 } 1388 VOID LoadFrom(CString sText) 1389 { 1390 sText.Replace(_T("\r\n"), _T("\n")); 1391 CRoListT<CData::CItem> ItemList; 1392 { 1393 CRoArrayT<CString> LineArray; 1394 _StringHelper::GetLines(sText, LineArray); 1395 __D(LineArray.GetCount() > 1, E_UNNAMED); 1396 LineArray.RemoveAt(0); // Header 1397 for(auto&& sLine: LineArray) 1398 { 1399 CData::CItem Item; 1400 _ATLTRY 1401 { 1402 ZeroMemory(&Item.m_Item, sizeof Item.m_Item); 1403 ZeroMemory(&Item.m_PageItem, sizeof Item.m_PageItem); 1404 CRoArrayT<CString> Array; 1405 _StringHelper::Split(sLine, _T('\t'), Array); 1406 __D(Array.GetCount() >= 9, E_UNNAMED); 1407 Item.m_Item.nFlags = ITEMFLAGS_NONE; 1408 _W(StrToIntEx(Array[1], 0, (INT*) &Item.m_Item.nProcessIdentifier)); 1409 Item.m_Item.nPageIdentifier = 0; 1410 _W(StrToInt64Ex(Array[3], STIF_SUPPORT_HEX, (LONGLONG*) &Item.m_Item.nFilterGraphIdentifier)); 1411 wcsncpy_s(Item.m_Item.pszFilterGraphName, Array[4], _TRUNCATE); 1412 Item.m_PageItem.nFlags = PAGEITEMFLAGS_NONE; 1413 _W(StrToIntEx(Array[2], 0, (INT*) &Item.m_PageItem.nThreadIdentifier)); 1414 _W(StrToInt64Ex(Array[5], STIF_SUPPORT_HEX, (LONGLONG*) &Item.m_PageItem.nFilterIdentifier)); 1415 wcsncpy_s(Item.m_PageItem.pszFilterName, Array[6], _TRUNCATE); 1416 wcsncpy_s(Item.m_PageItem.pszStreamName, Array[7], _TRUNCATE); 1417 #pragma region Time 1418 static CRoStaticRe g_Expression(_T("^{[0-9]+}\\:{[0-9]+}\\:{[0-9]+}\\.{[0-9]+}$"), FALSE); 1419 CRoReMatchContext MatchContext; 1420 if(g_Expression.Match(Array[0], &MatchContext)) 1421 { 1422 // NOTE: Let's go with today 1423 SYSTEMTIME Time; 1424 GetSystemTime(&Time); 1425 Time.wHour = (WORD) _ttoi(MatchContext.GetMatchString(0)); 1426 Time.wMinute = (WORD) _ttoi(MatchContext.GetMatchString(1)); 1427 Time.wSecond = (WORD) _ttoi(MatchContext.GetMatchString(2)); 1428 Time.wMilliseconds = (WORD) _ttoi(MatchContext.GetMatchString(3)); 1429 _W(SystemTimeToFileTime(&Time, &reinterpret_cast<FILETIME&>(Item.m_PageItem.nTime))); 1430 } 1431 #pragma endregion 1432 const CString& sType = Array[8]; 1433 if(sType.Compare(_T("New Segment")) == 0) 1434 { 1435 Item.m_PageItem.nFlags |= PAGEITEMFLAG_NEWSEGMENT; 1436 } else 1437 if(sType.Compare(_T("Media Sample")) == 0) 1438 { 1439 Item.m_PageItem.nFlags |= PAGEITEMFLAG_MEDIASAMPLE; 1440 AM_SAMPLE2_PROPERTIES& Properties = Item.m_PageItem.Data.MediaSample.Properties; 1441 #pragma region Sample Flags 1442 _A(!Properties.dwSampleFlags); 1443 CString sSampleFlags = Array[9]; 1444 sSampleFlags.Replace(_T(" | "), _T("|")); 1445 CRoArrayT<CString> FlagArray; 1446 _StringHelper::Split(sSampleFlags, _T('|'), FlagArray); 1447 for(auto&& sFlag: FlagArray) 1448 { 1449 static const CFlagNameT<DWORD> g_pMap[] = 1450 { 1451 #define A(x) { x, #x }, 1452 A(AM_SAMPLE_SPLICEPOINT) 1453 A(AM_SAMPLE_PREROLL) 1454 A(AM_SAMPLE_DATADISCONTINUITY) 1455 A(AM_SAMPLE_TYPECHANGED) 1456 A(AM_SAMPLE_TIMEVALID) 1457 A(AM_SAMPLE_TIMEDISCONTINUITY) 1458 A(AM_SAMPLE_FLUSH_ON_PAUSE) 1459 A(AM_SAMPLE_STOPVALID) 1460 A(AM_SAMPLE_ENDOFSTREAM) 1461 //A(AM_STREAM_MEDIA) 1462 //A(AM_STREAM_CONTROL) 1463 #undef A 1464 }; 1465 BOOL bHandled = FALSE; 1466 for(auto&& Item: g_pMap) 1467 if(sFlag.Compare(CString(Item.pszName)) == 0) 1468 { 1469 Properties.dwSampleFlags |= Item.Value; 1470 bHandled = TRUE; 1471 break; 1472 } 1473 if(bHandled) 1474 continue; 1475 INT nFlag; 1476 _W(StrToIntEx(sFlag, STIF_SUPPORT_HEX, &nFlag)); 1477 Properties.dwSampleFlags |= nFlag; 1478 } 1479 #pragma endregion 1480 if(!Array[10].IsEmpty()) 1481 _W(StrToInt64Ex(Array[10], 0, (LONGLONG*) &Properties.tStart)); 1482 if(!Array[11].IsEmpty()) 1483 _W(StrToInt64Ex(Array[11], 0, (LONGLONG*) &Properties.tStop)); 1484 if(!Array[13].IsEmpty()) 1485 _W(StrToIntEx(Array[13], 0, (INT*) &Properties.lActual)); 1486 } else 1487 if(sType.Compare(_T("End of Stream")) == 0) 1488 { 1489 Item.m_PageItem.nFlags |= PAGEITEMFLAG_ENDOFSTREAM; 1490 } else 1491 { 1492 _A(sType.Compare(_T("Comment")) == 0); 1493 Item.m_PageItem.nFlags |= PAGEITEMFLAG_COMMENT; 1494 } 1495 if(Array.GetCount() > 14) 1496 wcsncpy_s(Item.m_PageItem.pszComment, Array[14], _TRUNCATE); 1497 if(Array.GetCount() > 15) 1498 { 1499 CString sHighlight = Array[15]; 1500 if(!sHighlight.IsEmpty()) 1501 { 1502 _A(sHighlight[0] == _T('*')); 1503 sHighlight.Delete(0); 1504 _W(StrToIntEx(sHighlight, 0, (INT*) &Item.m_nHighlightIndex)); 1505 //Item.m_PageItem.nFlags &= ~PAGEITEMFLAG_HIGHLIGHT_MASK; 1506 //Item.m_PageItem.nFlags |= (Item.m_nHighlightIndex << PAGEITEMFLAG_HIGHLIGHT_SHIFT) & PAGEITEMFLAG_HIGHLIGHT_MASK; 1507 } 1508 } 1509 } 1510 _ATLCATCHALL() 1511 { 1512 _Z_EXCEPTION(); 1513 continue; 1514 } 1515 ItemList.AddTail(Item); 1516 } 1517 } 1518 m_Data.Initialize(); 1519 for(auto&& Item: ItemList) 1520 m_Data.m_ItemArray.Add(Item); 1521 m_pHandleMapLock.Release(); 1522 m_HandleMap.RemoveAll(); 1523 UpdateListView(); 1524 } 1525 VOID LoadFromFile(LPCTSTR pszPath) 1526 { 1527 CAtlFile File; 1528 __C(File.Create(pszPath, GENERIC_READ, FILE_SHARE_READ, OPEN_EXISTING)); 1529 ULONGLONG nFileSize; 1530 __C(File.GetSize(nFileSize)); 1531 CHeapPtr<BYTE> pnData; 1532 __D(pnData.Allocate((SIZE_T) nFileSize + 1), E_OUTOFMEMORY); 1533 __C(File.Read(pnData, (DWORD) nFileSize)); 1534 pnData[(SIZE_T) nFileSize] = 0; 1535 LoadFrom(StringFromUtf8String(CStringA((LPCSTR) (const BYTE*) pnData))); 1330 1536 } 1331 1537 … … 1359 1565 _W(m_SaveToFileStatic.SubclassWindow(GetDlgItem(IDC_MEDIASAMPLETRACE_MEDIASAMPLE_SAVETOFILE))); 1360 1566 m_SaveToFileStatic.SetExtendedStyle(CRoHyperStatic::CS_ANCHORCLICKCOMMAND); 1361 CRoHyperStatic::ArrangeHorizontally(&m_RefreshStatic, &m_CopyToClipboardStatic, &m_SaveToFileStatic, NULL); 1567 _W(m_LoadFromFileStatic.SubclassWindow(GetDlgItem(IDC_MEDIASAMPLETRACE_MEDIASAMPLE_LOADFROMFILE))); 1568 m_LoadFromFileStatic.SetExtendedStyle(CRoHyperStatic::CS_ANCHORCLICKCOMMAND); 1569 CRoHyperStatic::ArrangeHorizontally(&m_RefreshStatic, &m_CopyToClipboardStatic, &m_SaveToFileStatic, &m_LoadFromFileStatic, NULL); 1362 1570 #pragma region Filter 1363 1571 __E(m_FilterDialog.Create(m_hWnd, (LPARAM) this)); … … 1380 1588 #pragma endregion 1381 1589 DlgResize_Init(FALSE, FALSE); 1590 m_pHandleMapLock.Construct(); 1382 1591 UpdateListView(); 1383 1592 m_ChangeMap.RemoveAll(); … … 1397 1606 _W(m_PropertySheet.CenterWindow()); 1398 1607 #pragma endregion 1399 m_pThread.Construct()->Initialize(this, &CMediaSamplePropertyPage::ThreadProc); 1608 #if _DEVELOPMENT && FALSE 1609 LoadFromFile(_T("D:\\MediaSampleTrace.tsv")); 1610 #endif // _DEVELOPMENT 1400 1611 } 1401 1612 _ATLCATCHALL() … … 1410 1621 { 1411 1622 CWaitCursor WaitCursor; 1412 m_p Thread.Release();1623 m_pHandleMapLock.Release(); 1413 1624 return 0; 1414 1625 } … … 1580 1791 return 0; 1581 1792 } 1793 LRESULT OnLoadFromFile(UINT, INT, HWND) 1794 { 1795 static const COMDLG_FILTERSPEC g_pFilter[] = 1796 { 1797 { _T("TSV Files"), _T("*.tsv") }, 1798 { _T("All Files"), _T("*.*") }, 1799 }; 1800 CPath sPath = _CommonDialogHelper::QueryOpenPath(m_hWnd, g_pFilter, _T("tsv"), _T("Media Sample Trace.tsv")); 1801 if(!_tcslen(sPath)) 1802 return 0; 1803 CWaitCursor WaitCursor; 1804 LoadFromFile(sPath); 1805 return 0; 1806 } 1582 1807 LRESULT OnResetData(UINT, INT, HWND) 1583 1808 { … … 1688 1913 } 1689 1914 }; 1915 1916 inline VOID MediaSampleTrace_Reset(DWORD nProcessIdentifier) 1917 { 1918 nProcessIdentifier; 1919 // TODO: Implement processs-specific operation (support non-zero nProcessIdentifier) 1920 CMediaSampleTraceBase::CPages Pages; 1921 if(Pages.Initialize()) 1922 Pages.ResetData(); 1923 } 1924 inline CString MediaSampleTrace_Get(DWORD nProcessIdentifier) 1925 { 1926 CString sText; 1927 CMediaSampleTraceBase::CPages Pages; 1928 if(Pages.Initialize()) 1929 { 1930 CMediaSampleTraceBase::CData Data; 1931 Data.Initialize(); 1932 CMediaSampleTraceBase::CHandleMap HandleMap; 1933 Pages.GetData(Data, &HandleMap); 1934 Data.Sort(); 1935 sText += CMediaSampleTracePropertySheet::CreateDataItemHeaderText(); 1936 for(auto&& Item: Data.m_ItemArray) 1937 if(!nProcessIdentifier || Item.m_Item.nProcessIdentifier == nProcessIdentifier) 1938 sText += CMediaSampleTracePropertySheet::CreateDataItemText(Item); 1939 } 1940 return sText; 1941 } 1942 inline CComPtr<IUnknown> MediaSampleTrace_Lock() 1943 { 1944 CObjectPtr<CMediaSampleTraceBase::CHandleMapLock> pHandleMapLock; 1945 pHandleMapLock.Construct(); 1946 return (CMediaSampleTraceBase::CHandleMapLock*) pHandleMapLock; 1947 } -
trunk/DirectShowSpy/Module.idl
r608 r617 234 234 [id(6), propget] HRESULT Options([out, retval] VARIANT* pvOptions); 235 235 [id(6), propput] HRESULT Options([in] VARIANT vOptions); 236 [id(7)] HRESULT ResetMediaSampleTrace([in] VARIANT vProcessIdentifier); 237 [id(8)] HRESULT LockMediaSampleTrace([out, retval] IUnknown** ppLockUnknown); 238 [id(9)] HRESULT GetMediaSampleTrace([in] VARIANT vProcessIdentifier, [out, retval] BSTR* psText); 236 239 }; 237 240 [ … … 242 245 { 243 246 [default] interface IFilterGraphHelper; 247 interface IModuleVersionInformation; 244 248 }; 245 249 [ -
trunk/DirectShowSpy/resource.h
r608 r617 130 130 #define IDC_MEDIASAMPLETRACE_MEDIASAMPLE_SAVETOFILE 2113 131 131 #define IDC_MEDIASAMPLETRACE_MEDIASAMPLE_RESETDATA 2114 132 #define IDC_MEDIASAMPLETRACE_MEDIASAMPLE_LOADFROMFILE 2115 132 133 #define IDC_MEDIASAMPLETRACE_MEDIASAMPLE_OPENFILTERGRAPHLIST 2120 133 134 #define IDC_MEDIASAMPLETRACE_MEDIASAMPLE_OPENFILTERGRAPHPROPERTIES 2121 … … 157 158 #define IDR_SYSTEMDEVICEENUMERATORSPY 25004 158 159 #define IDR_FILTERGRAPHHELPER 25050 159 #define IDR_FILTERGRAPHTABLEITEM 160 #define IDR_FILTERGRAPHTABLE 160 #define IDR_FILTERGRAPHTABLEITEM 25051 161 #define IDR_FILTERGRAPHTABLE 25052 161 162 #define IDD_ABOUT 29900 162 163 #define IDC_ABOUT_ICON 29901 … … 170 171 #define IDC_ABOUT_COPYRIGHT 29909 171 172 #define IDC_ABOUT_COPYRIGHTWARNING 29910 173 #define ID_ACCELERATOR32807 32807 172 174 173 175 // Next default values for new objects … … 176 178 #ifndef APSTUDIO_READONLY_SYMBOLS 177 179 #define _APS_NEXT_RESOURCE_VALUE 214 178 #define _APS_NEXT_COMMAND_VALUE 3280 6180 #define _APS_NEXT_COMMAND_VALUE 32809 179 181 #define _APS_NEXT_CONTROL_VALUE 257 180 182 #define _APS_NEXT_SYMED_VALUE 103
Note: See TracChangeset
for help on using the changeset viewer.