objectsafety.cpp
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:3k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * objectsafety.cpp: ActiveX control for VLC
  3.  *****************************************************************************
  4.  * Copyright (C) 2005 the VideoLAN team
  5.  *
  6.  * Authors: Damien Fouilleul <Damien.Fouilleul@laposte.net>
  7.  *
  8.  * This program is free software; you can redistribute it and/or modify
  9.  * it under the terms of the GNU General Public License as published by
  10.  * the Free Software Foundation; either version 2 of the License, or
  11.  * (at your option) any later version.
  12.  *
  13.  * This program is distributed in the hope that it will be useful,
  14.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16.  * GNU General Public License for more details.
  17.  *
  18.  * You should have received a copy of the GNU General Public License
  19.  * along with this program; if not, write to the Free Software
  20.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  21.  *****************************************************************************/
  22. #include "plugin.h"
  23. #include "objectsafety.h"
  24. #include "axvlc_idl.h"
  25. #if 0
  26. const GUID IID_IObjectSafety =
  27.     {0xCB5BDC81,0x93C1,0x11cf,{0x8F,0x20,0x00,0x80,0x5F,0x2C,0xD0,0x64}};
  28. #endif
  29. using namespace std;
  30. STDMETHODIMP VLCObjectSafety::GetInterfaceSafetyOptions(
  31.     REFIID riid,
  32.     DWORD *pdwSupportedOptions,
  33.     DWORD *pdwEnabledOptions
  34. )
  35. {
  36.     if( (NULL == pdwSupportedOptions) || (NULL == pdwEnabledOptions) )
  37.         return E_POINTER;
  38.     *pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_DATA|INTERFACESAFE_FOR_UNTRUSTED_CALLER;
  39.     if( (IID_IDispatch == riid)
  40.      || (IID_IVLCControl == riid) )
  41.     {
  42.         *pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER;
  43.         return NOERROR;
  44.     }
  45.     else if( (IID_IPersist == riid)
  46.           || (IID_IPersistStreamInit == riid)
  47.           || (IID_IPersistStorage == riid)
  48.           || (IID_IPersistPropertyBag == riid) )
  49.     {
  50.         *pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_DATA;
  51.         return NOERROR;
  52.     }
  53.     *pdwEnabledOptions = 0;
  54.     return E_NOINTERFACE;
  55. };
  56. STDMETHODIMP VLCObjectSafety::SetInterfaceSafetyOptions(
  57.     REFIID riid,
  58.     DWORD dwOptionSetMask,
  59.     DWORD dwEnabledOptions
  60. )
  61. {
  62.     if( (IID_IDispatch == riid)
  63.      || (IID_IVLCControl == riid) )
  64.     {
  65.         if( (INTERFACESAFE_FOR_UNTRUSTED_CALLER == dwOptionSetMask)
  66.          && (INTERFACESAFE_FOR_UNTRUSTED_CALLER == dwEnabledOptions) )
  67.         {
  68.             return NOERROR;
  69.         }
  70.         return E_FAIL;
  71.     }
  72.     else if( (IID_IPersist == riid)
  73.           || (IID_IPersistStreamInit == riid)
  74.           || (IID_IPersistStorage == riid)
  75.           || (IID_IPersistPropertyBag == riid) )
  76.     {
  77.         if( (INTERFACESAFE_FOR_UNTRUSTED_DATA == dwOptionSetMask)
  78.          && (INTERFACESAFE_FOR_UNTRUSTED_DATA == dwEnabledOptions) )
  79.         {
  80.             return NOERROR;
  81.         }
  82.         return E_FAIL;
  83.     }
  84.     return E_FAIL;
  85. };