Changeset 155


Ignore:
Timestamp:
Dec 27, 2012, 10:53:03 AM (11 years ago)
Author:
roman
Message:

Additional evrprop.dll registration, fix for failed put onto ROT

Location:
trunk/DirectShowSpy
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/DirectShowSpy/Configuration.h

    r150 r155  
    237237
    238238        ////////////////////////////////////////////////////////
    239         // CProppageRegistrationPropertyPage
    240 
    241         class CProppageRegistrationPropertyPage :
    242                 public CPropertyPageT<CProppageRegistrationPropertyPage>,
    243                 //public CDialogResize<CProppageRegistrationPropertyPage>,
    244                 public CWindowWithPrivateMessagesT<CProppageRegistrationPropertyPage>
    245         {
    246         public:
    247                 enum { IDD = IDD_REGISTRATION_PROPPAGEREGISTRATION_PROPERTYPAGE };
    248 
    249         BEGIN_MSG_MAP_EX(CProppageRegistrationPropertyPage)
     239        // CModuleRegisrtationPropertyPageT
     240
     241        template <typename T>
     242        class CModuleRegisrtationPropertyPageT :
     243                public CPropertyPageT<T>,
     244                //public CDialogResize<T>,
     245                public CWindowWithPrivateMessagesT<T>
     246        {
     247        protected:
     248                typedef CModuleRegisrtationPropertyPageT<T> CModuleRegisrtationPropertyPage;
     249
     250        public:
     251
     252        BEGIN_MSG_MAP_EX(CProppageRegistrationPropertyPagCModuleRegisrtationPropertyPage)
    250253                CHAIN_MSG_MAP(CPropertyPage)
    251                 //CHAIN_MSG_MAP(CDialogResize<CProppageRegistrationPropertyPage>)
     254                //CHAIN_MSG_MAP(CDialogResize<T>)
    252255                CHAIN_MSG_MAP(CWindowWithPrivateMessages)
    253256                MSG_WM_INITDIALOG(OnInitDialog)
    254                 COMMAND_ID_HANDLER_EX(IDC_REGISTRATION_PROPPAGEREGISTRATION_REGISTER, OnRegister)
    255                 COMMAND_ID_HANDLER_EX(IDC_REGISTRATION_PROPPAGEREGISTRATION_UNREGISTER, OnUnregister)
    256                 COMMAND_ID_HANDLER_EX(IDC_REGISTRATION_PROPPAGEREGISTRATION_USERREGISTER, OnUserRegister)
    257                 COMMAND_ID_HANDLER_EX(IDC_REGISTRATION_PROPPAGEREGISTRATION_USERUNREGISTER, OnUserUnregister)
     257                COMMAND_ID_HANDLER_EX(T::IDD + IDC_REGISTER, OnRegister)
     258                COMMAND_ID_HANDLER_EX(T::IDD + IDC_UNREGISTER, OnUnregister)
     259                COMMAND_ID_HANDLER_EX(T::IDD + IDC_USERREGISTER, OnUserRegister)
     260                COMMAND_ID_HANDLER_EX(T::IDD + IDC_USERUNREGISTER, OnUserUnregister)
    258261                REFLECT_NOTIFICATIONS()
    259262        END_MSG_MAP()
    260263
     264        public:
     265
     266                ////////////////////////////////////////////////////
     267                // Resource Identifiers
     268
     269                enum
     270                {
     271                        //IDD_PROPERTYPAGE,
     272                        IDC_STATUS = 10,
     273                        IDC_PATH = 11,
     274                        IDC_REGISTER = 12,
     275                        IDC_UNREGISTER = 13,
     276                        IDC_USERSTATUS = 14,
     277                        IDC_USERPATH = 21,
     278                        IDC_USERREGISTER = 22,
     279                        IDC_USERUNREGISTER = 23,
     280                        IDC_USERNOTE = 24,
     281                };
     282
    261283        private:
     284                CPath m_sLocalPath;
    262285                CRegistrationPropertySheet& m_PropertySheet;
    263286                CRoEdit m_StatusEdit;
     
    275298
    276299        public:
    277         // CProppageRegistrationPropertyPage
    278                 CProppageRegistrationPropertyPage(CRegistrationPropertySheet* pPropertySheet) throw() :
     300        // CModuleRegisrtationPropertyPageT
     301                CModuleRegisrtationPropertyPageT(CRegistrationPropertySheet* pPropertySheet) throw() :
    279302                        m_PropertySheet(*pPropertySheet)
    280303                {
    281304                }
     305                VOID SetLocalPath(const CPath& sLocalPath)
     306                {
     307                        _A(!_tcslen(m_sLocalPath) && _tcslen(sLocalPath));
     308                        m_sLocalPath = sLocalPath;
     309                }
    282310                VOID UpdateControls()
    283311                {
    284                         class __declspec(uuid("92A3A302-DA7C-4A1F-BA7E-1802BB5D2D02")) PSFactoryBuffer;
    285312                        _A(_pAtlModule);
    286                         const CPath& sLocalPath = m_PropertySheet.m_sPropPagePath;
     313                        const CPath& sLocalPath = m_sLocalPath;
     314                        _A(_tcslen(m_sLocalPath));
     315                        _A(m_sLocalPath.FileExists());
    287316                        #pragma region System
    288317                        //CPath sPath = FindTypeLibraryPath(HKEY_LOCAL_MACHINE);
    289                         CPath sPath = FindClassPath(HKEY_LOCAL_MACHINE, __uuidof(PSFactoryBuffer));
     318                        CPath sPath = FindClassPath(HKEY_LOCAL_MACHINE, T::GetSampleClassIdentifier());
    290319                        const BOOL bPathEmpty = _tcslen(sPath) == 0;
    291320                        m_StatusEdit.SetValue(m_StatusArray[bPathEmpty ? 0 : 1]);
     
    318347                        {
    319348                                CWaitCursor WaitCursor;
    320                                 m_StatusEdit = GetDlgItem(IDC_REGISTRATION_PROPPAGEREGISTRATION_STATUS);
    321                                 m_PathEdit = GetDlgItem(IDC_REGISTRATION_PROPPAGEREGISTRATION_PATH);
    322                                 m_RegisterButton = GetDlgItem(IDC_REGISTRATION_PROPPAGEREGISTRATION_REGISTER);
    323                                 m_UnregisterButton = GetDlgItem(IDC_REGISTRATION_PROPPAGEREGISTRATION_UNREGISTER);
    324                                 m_UserStatusEdit = GetDlgItem(IDC_REGISTRATION_PROPPAGEREGISTRATION_USERSTATUS);
    325                                 m_UserPathEdit = GetDlgItem(IDC_REGISTRATION_PROPPAGEREGISTRATION_USERPATH);
    326                                 m_UserRegisterButton = GetDlgItem(IDC_REGISTRATION_PROPPAGEREGISTRATION_USERREGISTER);
    327                                 m_UserUnregisterButton = GetDlgItem(IDC_REGISTRATION_PROPPAGEREGISTRATION_USERUNREGISTER);
    328                                 //_W(m_UserNoteStatic.SubclassWindow(GetDlgItem(IDC_REGISTRATION_PROPPAGEREGISTRATION_USERNOTE)));
     349                                m_StatusEdit = GetDlgItem(T::IDD + IDC_STATUS);
     350                                m_PathEdit = GetDlgItem(T::IDD + IDC_PATH);
     351                                m_RegisterButton = GetDlgItem(T::IDD + IDC_REGISTER);
     352                                m_UnregisterButton = GetDlgItem(T::IDD + IDC_UNREGISTER);
     353                                m_UserStatusEdit = GetDlgItem(T::IDD + IDC_USERSTATUS);
     354                                m_UserPathEdit = GetDlgItem(T::IDD + IDC_USERPATH);
     355                                m_UserRegisterButton = GetDlgItem(T::IDD + IDC_USERREGISTER);
     356                                m_UserUnregisterButton = GetDlgItem(T::IDD + IDC_USERUNREGISTER);
     357                                //_W(m_UserNoteStatic.SubclassWindow(GetDlgItem(T::IDD + IDC_USERNOTE)));
    329358                                //m_UserNoteStatic.SetIdealHeight();
    330359                                if(GetOsVersion() >= 0x00060000) // Windows Vista or Windows Server 2008
     
    336365                                        }
    337366                                }
    338                                 _StringHelper::GetCommaSeparatedItems(AtlLoadString(IDC_REGISTRATION_PROPPAGEREGISTRATION_STATUS), m_StatusArray);
     367                                _StringHelper::GetCommaSeparatedItems(AtlLoadString(T::IDD + IDC_STATUS), m_StatusArray);
    339368                                _A(m_StatusArray.GetCount() == 2);
    340369                                UpdateControls();
     
    372401                                CWaitCursor WaitCursor;
    373402                                const BOOL bSilent = !(GetKeyState(VK_SCROLL) & 1);
    374                                 const DWORD nExitCode = ExecuteWait(AtlFormatString(_T("%s \"%s\""), bSilent ? _T("/s") : _T(""), m_PropertySheet.m_sPropPagePath), TRUE);
     403                                const DWORD nExitCode = ExecuteWait(AtlFormatString(_T("%s \"%s\""), bSilent ? _T("/s") : _T(""), m_sLocalPath), TRUE);
    375404                                if(bSilent)
    376405                                        MessageBeep(nExitCode ? MB_ICONERROR : MB_OK);
     
    390419                                CWaitCursor WaitCursor;
    391420                                const BOOL bSilent = !(GetKeyState(VK_SCROLL) & 1);
    392                                 const CPath& sPath = m_sPath; //m_PropertySheet.m_sPropPagePath
     421                                const CPath& sPath = m_sPath; //m_sLocalPath
    393422                                const DWORD nExitCode = ExecuteWait(AtlFormatString(_T("%s /u \"%s\""), bSilent ? _T("/s") : _T(""), sPath), TRUE);
    394423                                if(bSilent)
     
    409438                                CWaitCursor WaitCursor;
    410439                                const BOOL bSilent = !(GetKeyState(VK_SCROLL) & 1);
    411                                 const DWORD nExitCode = ExecuteWait(AtlFormatString(_T("%s /i:user /n \"%s\""), bSilent ? _T("/s") : _T(""), m_PropertySheet.m_sPropPagePath));
     440                                const DWORD nExitCode = ExecuteWait(AtlFormatString(_T("%s /i:user /n \"%s\""), bSilent ? _T("/s") : _T(""), m_sLocalPath));
    412441                                if(bSilent)
    413442                                        MessageBeep(nExitCode ? MB_ICONERROR : MB_OK);
     
    427456                                CWaitCursor WaitCursor;
    428457                                const BOOL bSilent = !(GetKeyState(VK_SCROLL) & 1);
    429                                 const DWORD nExitCode = ExecuteWait(AtlFormatString(_T("%s /i:user /n /u \"%s\""), bSilent ? _T("/s") : _T(""), m_PropertySheet.m_sPropPagePath));
    430                                 if(bSilent)
    431                                         MessageBeep(nExitCode ? MB_ICONERROR : MB_OK);
    432                                 CancelToClose();
    433                         }
    434                         _ATLCATCH(Exception)
    435                         {
    436                                 AtlExceptionMessageBox(m_hWnd, Exception);
    437                         }
    438                         UpdateControls();
    439                         return 0;
    440                 }
     458                                const DWORD nExitCode = ExecuteWait(AtlFormatString(_T("%s /i:user /n /u \"%s\""), bSilent ? _T("/s") : _T(""), m_sLocalPath));
     459                                if(bSilent)
     460                                        MessageBeep(nExitCode ? MB_ICONERROR : MB_OK);
     461                                CancelToClose();
     462                        }
     463                        _ATLCATCH(Exception)
     464                        {
     465                                AtlExceptionMessageBox(m_hWnd, Exception);
     466                        }
     467                        UpdateControls();
     468                        return 0;
     469                }
     470        };
     471
     472        ////////////////////////////////////////////////////////
     473        // CProppageRegistrationPropertyPage
     474
     475        class CProppageRegistrationPropertyPage :
     476                public CModuleRegisrtationPropertyPageT<CProppageRegistrationPropertyPage>
     477        {
     478        public:
     479                enum { IDD = IDD_REGISTRATION_PROPPAGEREGISTRATION_PROPERTYPAGE };
     480
     481        BEGIN_MSG_MAP_EX(CProppageRegistrationPropertyPage)
     482                CHAIN_MSG_MAP(CModuleRegisrtationPropertyPage)
     483        END_MSG_MAP()
     484
     485        public:
     486        // CProppageRegistrationPropertyPage
     487                CProppageRegistrationPropertyPage(CRegistrationPropertySheet* pPropertySheet) throw() :
     488                        CModuleRegisrtationPropertyPageT<CProppageRegistrationPropertyPage>(pPropertySheet)
     489                {
     490                }
     491                static CLSID GetSampleClassIdentifier() throw()
     492                {
     493                        class __declspec(uuid("92A3A302-DA7C-4A1F-BA7E-1802BB5D2D02")) PSFactoryBuffer;
     494                        return __uuidof(PSFactoryBuffer);
     495                }
     496
     497        // Window message handlers
     498        };
     499
     500        ////////////////////////////////////////////////////////
     501        // CEvrpropRegistrationPropertyPage
     502
     503        class CEvrpropRegistrationPropertyPage :
     504                public CModuleRegisrtationPropertyPageT<CEvrpropRegistrationPropertyPage>
     505        {
     506        public:
     507                enum { IDD = IDD_REGISTRATION_EVRPROPREGISTRATION_PROPERTYPAGE };
     508
     509        BEGIN_MSG_MAP_EX(CEvrpropRegistrationPropertyPage)
     510                CHAIN_MSG_MAP(CModuleRegisrtationPropertyPage)
     511        END_MSG_MAP()
     512
     513        public:
     514        // CEvrpropRegistrationPropertyPage
     515                CEvrpropRegistrationPropertyPage(CRegistrationPropertySheet* pPropertySheet) throw() :
     516                        CModuleRegisrtationPropertyPageT<CEvrpropRegistrationPropertyPage>(pPropertySheet)
     517                {
     518                }
     519                static CLSID GetSampleClassIdentifier() throw()
     520                {
     521                        class __declspec(uuid("7C737B87-2760-4183-B5B4-ACA7C64DD720")) EvrMixerControl;
     522                        return __uuidof(EvrMixerControl);
     523                }
     524
     525        // Window message handlers
    441526        };
    442527
     
    444529        CRegistrationPropertyPage m_RegistrationPropertyPage;
    445530        CProppageRegistrationPropertyPage m_ProppageRegistrationPropertyPage;
    446         CPath m_sPropPagePath;
     531        CEvrpropRegistrationPropertyPage m_EvrpropRegistrationPropertyPage;
     532        CPath m_sProppagePath;
     533        CPath m_sEvrpropPath;
    447534
    448535public:
     
    451538                CPropertySheetT<CRegistrationPropertySheet>(IDS_REGISTRATION_PROPERTYSHEETCAPTION),
    452539                m_RegistrationPropertyPage(this),
    453                 m_ProppageRegistrationPropertyPage(this)
     540                m_ProppageRegistrationPropertyPage(this),
     541                m_EvrpropRegistrationPropertyPage(this)
    454542        {
    455543                AddPage(m_RegistrationPropertyPage);
    456544                CPath sDirectory = GetPath();
    457545                sDirectory.RemoveFileSpec();
    458                 m_sPropPagePath.Combine(sDirectory, _T("proppage.dll"));
    459                 if(m_sPropPagePath.FileExists())
     546                m_sProppagePath.Combine(sDirectory, _T("proppage.dll"));
     547                if(m_sProppagePath.FileExists())
     548                {
     549                        m_ProppageRegistrationPropertyPage.SetLocalPath(m_sProppagePath);
    460550                        AddPage(m_ProppageRegistrationPropertyPage);
     551                }
     552                m_sEvrpropPath.Combine(sDirectory, _T("evrprop.dll"));
     553                if(m_sEvrpropPath.FileExists())
     554                {
     555                        m_EvrpropRegistrationPropertyPage.SetLocalPath(m_sEvrpropPath);
     556                        AddPage(m_EvrpropRegistrationPropertyPage);
     557                }
    461558        }
    462559        BOOL SetInitialPosition()
  • trunk/DirectShowSpy/DirectShowSpy.rc

    r150 r155  
    6262
    6363VS_VERSION_INFO VERSIONINFO
    64  FILEVERSION  1, 0, 0, 807
     64 FILEVERSION  1, 0, 0, 829
    6565 PRODUCTVERSION 1,0,0,1
    6666 FILEFLAGSMASK 0x3fL
     
    8181            VALUE "CompanyName", "Roman Ryltsov"
    8282            VALUE "FileDescription", "Alax.Info DirectShow Spy Module"
    83             VALUE "FileVersion",  "1, 0, 0, 807\0"
     83            VALUE "FileVersion",  "1, 0, 0, 829\0"
    8484            VALUE "InternalName", "DirectShowSpy.dll"
    8585            VALUE "LegalCopyright", "Copyright © Alax.Info, Roman Ryltsov, 2008-2011"
     
    210210END
    211211
     212IDD_REGISTRATION_EVRPROPREGISTRATION_PROPERTYPAGE DIALOGEX 0, 0, 227, 200
     213STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
     214EXSTYLE WS_EX_CONTROLPARENT
     215FONT 8, "MS Shell Dlg", 400, 0, 0x0
     216BEGIN
     217    LTEXT           "Use controls below to review current COM registration status of Windows SDK evrprop.dll, and register or unregister the library.",IDC_STATIC,6,6,215,18
     218    CONTROL         "",IDC_STATIC,"Static",SS_ETCHEDHORZ,6,36,216,20
     219    LTEXT           "System Registration ",IDC_STATIC,12,32,67,8
     220    LTEXT           "Status: ",IDC_STATIC,12,48,26,8
     221    EDITTEXT        IDC_REGISTRATION_EVRPROPREGISTRATION_STATUS,48,48,72,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
     222    LTEXT           "Path: ",IDC_STATIC,12,60,20,8
     223    EDITTEXT        IDC_REGISTRATION_EVRPROPREGISTRATION_PATH,48,60,174,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP
     224    PUSHBUTTON      "&Register",IDC_REGISTRATION_EVRPROPREGISTRATION_REGISTER,48,78,50,14
     225    PUSHBUTTON      "&Unregister",IDC_REGISTRATION_EVRPROPREGISTRATION_UNREGISTER,102,78,50,14
     226    CONTROL         "",IDC_STATIC,"Static",SS_ETCHEDHORZ | NOT WS_VISIBLE,6,106,215,1
     227    LTEXT           "Per-User Registration ",IDC_STATIC,12,102,72,8,NOT WS_VISIBLE
     228    LTEXT           "Status: ",IDC_STATIC,12,118,26,8,NOT WS_VISIBLE
     229    EDITTEXT        IDC_REGISTRATION_EVRPROPREGISTRATION_USERSTATUS,48,118,72,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_VISIBLE | NOT WS_BORDER | NOT WS_TABSTOP
     230    LTEXT           "Path: ",IDC_STATIC,12,130,20,8,NOT WS_VISIBLE
     231    EDITTEXT        IDC_REGISTRATION_EVRPROPREGISTRATION_USERPATH,48,130,174,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_VISIBLE | NOT WS_BORDER | NOT WS_TABSTOP
     232    PUSHBUTTON      "Register",IDC_REGISTRATION_EVRPROPREGISTRATION_USERREGISTER,48,148,50,14,NOT WS_VISIBLE
     233    PUSHBUTTON      "Unregister",IDC_REGISTRATION_EVRPROPREGISTRATION_USERUNREGISTER,102,148,50,14,NOT WS_VISIBLE
     234END
     235
    212236
    213237/////////////////////////////////////////////////////////////////////////////
     
    263287BEGIN
    264288    IDD_REGISTRATION_PROPPAGEREGISTRATION_PROPERTYPAGE "proppage.dll"
     289    IDD_REGISTRATION_EVRPROPREGISTRATION_PROPERTYPAGE "evrprop.dll"
    265290END
    266291
     
    273298BEGIN
    274299    IDC_REGISTRATION_PROPPAGEREGISTRATION_STATUS "Not Registered, Registered"
     300    IDC_REGISTRATION_EVRPROPREGISTRATION_STATUS "Not Registered, Registered"
    275301END
    276302
  • trunk/DirectShowSpy/DirectShowSpy_i.c

    r150 r155  
    77
    88 /* File created by MIDL compiler version 7.00.0500 */
    9 /* at Fri Nov 23 16:43:33 2012
     9/* at Thu Dec 27 20:32:54 2012
    1010 */
    1111/* Compiler settings for .\DirectShowSpy.idl:
  • trunk/DirectShowSpy/DirectShowSpy_i.h

    r150 r155  
    55
    66 /* File created by MIDL compiler version 7.00.0500 */
    7 /* at Fri Nov 23 16:43:33 2012
     7/* at Thu Dec 27 20:32:54 2012
    88 */
    99/* Compiler settings for .\DirectShowSpy.idl:
  • trunk/DirectShowSpy/DirectShowSpy_p.c

    r150 r155  
    55
    66 /* File created by MIDL compiler version 7.00.0500 */
    7 /* at Fri Nov 23 16:43:33 2012
     7/* at Thu Dec 27 20:32:54 2012
    88 */
    99/* Compiler settings for .\DirectShowSpy.idl:
  • trunk/DirectShowSpy/FilterGraphSpy.h

    r117 r155  
    187187        CComPtr<IMediaEventEx> m_pInnerMediaEventEx;
    188188        _FilterGraphHelper::CRotRunningFilterGraph m_RunningFilterGraph;
     189        INT m_nRunningFilterGraphReference;
    189190        CComPtr<IUnknown> m_pTemporaryUnknown;
    190191        CObjectPtr<CAmGraphBuilderCallback> m_pPrivateAmGraphBuilderCallback;
     
    208209                        return;
    209210                _Z4(atlTraceRefcount, 4, _T("this 0x%p, m_dwRef %d\n"), this, m_dwRef);
     211                m_nRunningFilterGraphReference = 0;
     212                CInterlockedLong& nReferenceCount = reinterpret_cast<CInterlockedLong&>(m_dwRef);
     213                const LONG nBeforeReferenceCount = m_dwRef;
    210214                static CConstIntegerRegistryValue g_nEnableRotMonikerItemNameSuffix(_T("Enable ROT Moniker Item Name Suffix")); // 0 Default (Enabled), 1 Disabled, 2 Enabled
    211215                if(g_nEnableRotMonikerItemNameSuffix != 1)
     
    220224                } else
    221225                        m_RunningFilterGraph.SetFilterGraph(GetControllingUnknown());
    222                 _Z4(atlTraceRefcount, 4, _T("this 0x%p, m_dwRef %d\n"), this, m_dwRef);
     226                _Z4(atlTraceRefcount, 4, _T("this 0x%p, m_bIsAggregated %d, m_dwRef %d\n"), this, m_bIsAggregated, m_dwRef);
     227                if(!m_bIsAggregated)
     228                {
     229                        m_nRunningFilterGraphReference++;
     230                        const LONG nAfterReferenceCount = m_dwRef;
     231                        if(nBeforeReferenceCount == nAfterReferenceCount)
     232                        {
     233                                // NOTE: Putting onto Running Object Table succeeded, however no external reference detected which we need to compensate by self-releasing
     234                                m_nRunningFilterGraphReference++;
     235                                return;
     236                        }
     237                }
    223238                Release();
    224239        }
     
    227242                if(!m_RunningFilterGraph.GetCookie())
    228243                        return;
    229                 AddRef();
     244                if(m_nRunningFilterGraphReference != 2)
     245                        AddRef();
    230246                _Z4(atlTraceRefcount, 4, _T("this 0x%p, m_dwRef 0x%x\n"), this, m_dwRef);
    231247                m_RunningFilterGraph.SetFilterGraph(NULL);
     
    371387                                _ATLRETHROW;
    372388                        }
    373 #if defined(_DEBUG) && FALSE
    374                         typedef HRESULT (WINAPI *DLLCANUNLOADNOW)();
    375                         DLLCANUNLOADNOW DllCanUnloadNow = (DLLCANUNLOADNOW) GetProcAddress(hModule, "DllCanUnloadNow");
    376                         __E(DllCanUnloadNow);
    377                         const HRESULT nDllCanUnloadNowResult = DllCanUnloadNow();
    378                         _Z4(atlTraceRefcount, 4, _T("nDllCanUnloadNowResult 0x%08x\n"), nDllCanUnloadNowResult);
    379 #endif // defined(_DEBUG)
     389                        #if defined(_DEBUG) && FALSE
     390                                typedef HRESULT (WINAPI *DLLCANUNLOADNOW)();
     391                                DLLCANUNLOADNOW DllCanUnloadNow = (DLLCANUNLOADNOW) GetProcAddress(hModule, "DllCanUnloadNow");
     392                                __E(DllCanUnloadNow);
     393                                const HRESULT nDllCanUnloadNowResult = DllCanUnloadNow();
     394                                _Z4(atlTraceRefcount, 4, _T("nDllCanUnloadNowResult 0x%08x\n"), nDllCanUnloadNowResult);
     395                        #endif // defined(_DEBUG)
    380396                        _A(!m_hQuartzModule);
    381397                        m_hQuartzModule = hModule;
  • trunk/DirectShowSpy/resource.h

    r147 r155  
    4848#define IDC_REGISTRATION_PROPPAGEREGISTRATION_USERUNREGISTER 1233
    4949#define IDC_REGISTRATION_PROPPAGEREGISTRATION_USERNOTE 1234
     50#define IDD_REGISTRATION_EVRPROPREGISTRATION_PROPERTYPAGE 1310
     51#define IDC_REGISTRATION_EVRPROPREGISTRATION_STATUS 1320
     52#define IDC_REGISTRATION_EVRPROPREGISTRATION_PATH 1321
     53#define IDC_REGISTRATION_EVRPROPREGISTRATION_REGISTER 1322
     54#define IDC_REGISTRATION_EVRPROPREGISTRATION_UNREGISTER 1323
     55#define IDC_REGISTRATION_EVRPROPREGISTRATION_USERSTATUS 1330
     56#define IDC_REGISTRATION_EVRPROPREGISTRATION_USERPATH 1331
     57#define IDC_REGISTRATION_EVRPROPREGISTRATION_USERREGISTER 1332
     58#define IDC_REGISTRATION_EVRPROPREGISTRATION_USERUNREGISTER 1333
     59#define IDC_REGISTRATION_EVRPROPREGISTRATION_USERNOTE 1334
    5060#define IDD_ABOUT                       29900
    5161#define IDC_ABOUT_ICON                  29901
Note: See TracChangeset for help on using the changeset viewer.