mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-01 17:23:37 +00:00
Stub implementation of IInternetSecurityManager.
Add a classfactory. Fix calling convention of CoInternetCreateSecurityManager.
This commit is contained in:
parent
240c02bbfe
commit
076b5b706f
|
@ -8,6 +8,7 @@ EXTRALIBS = -luuid
|
|||
|
||||
C_SRCS = \
|
||||
regsvr.c \
|
||||
sec_mgr.c \
|
||||
umon.c \
|
||||
urlmon_main.c
|
||||
|
||||
|
|
250
dlls/urlmon/sec_mgr.c
Normal file
250
dlls/urlmon/sec_mgr.c
Normal file
|
@ -0,0 +1,250 @@
|
|||
/*
|
||||
* Internet Security Manager
|
||||
*
|
||||
* Copyright (c) 2004 Huw D M Davies
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "winuser.h"
|
||||
#include "wine/debug.h"
|
||||
#include "ole2.h"
|
||||
#include "wine/unicode.h"
|
||||
#include "urlmon.h"
|
||||
#include "urlmon_main.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(urlmon);
|
||||
|
||||
typedef struct SecManagerImpl{
|
||||
|
||||
IInternetSecurityManagerVtbl* lpvtbl1; /* VTable relative to the IInternetSecurityManager interface.*/
|
||||
|
||||
ULONG ref; /* reference counter for this object */
|
||||
|
||||
} SecManagerImpl;
|
||||
|
||||
/* IUnknown prototype functions */
|
||||
static HRESULT WINAPI SecManagerImpl_QueryInterface(IInternetSecurityManager* iface,REFIID riid,void** ppvObject);
|
||||
static ULONG WINAPI SecManagerImpl_AddRef(IInternetSecurityManager* iface);
|
||||
static ULONG WINAPI SecManagerImpl_Release(IInternetSecurityManager* iface);
|
||||
|
||||
static HRESULT WINAPI SecManagerImpl_SetSecuritySite(IInternetSecurityManager *iface,
|
||||
IInternetSecurityMgrSite *pSite);
|
||||
static HRESULT WINAPI SecManagerImpl_GetSecuritySite(IInternetSecurityManager *iface,
|
||||
IInternetSecurityMgrSite **ppSite);
|
||||
static HRESULT WINAPI SecManagerImpl_MapUrlToZone(IInternetSecurityManager *iface,
|
||||
LPCWSTR pwszUrl, DWORD *pdwZone,
|
||||
DWORD dwFlags);
|
||||
static HRESULT WINAPI SecManagerImpl_GetSecurityId(IInternetSecurityManager *iface,
|
||||
LPCWSTR pwszUrl,
|
||||
BYTE *pbSecurityId, DWORD *pcbSecurityId,
|
||||
DWORD dwReserved);
|
||||
static HRESULT WINAPI SecManagerImpl_ProcessUrlAction(IInternetSecurityManager *iface,
|
||||
LPCWSTR pwszUrl, DWORD dwAction,
|
||||
BYTE *pPolicy, DWORD cbPolicy,
|
||||
BYTE *pContext, DWORD cbContext,
|
||||
DWORD dwFlags, DWORD dwReserved);
|
||||
static HRESULT WINAPI SecManagerImpl_QueryCustomPolicy(IInternetSecurityManager *iface,
|
||||
LPCWSTR pwszUrl, REFGUID guidKey,
|
||||
BYTE **ppPolicy, DWORD *pcbPolicy,
|
||||
BYTE *pContext, DWORD cbContext,
|
||||
DWORD dwReserved);
|
||||
static HRESULT WINAPI SecManagerImpl_SetZoneMapping(IInternetSecurityManager *iface,
|
||||
DWORD dwZone, LPCWSTR pwszPattern, DWORD dwFlags);
|
||||
static HRESULT WINAPI SecManagerImpl_GetZoneMappings(IInternetSecurityManager *iface,
|
||||
DWORD dwZone, IEnumString **ppenumString, DWORD dwFlags);
|
||||
|
||||
static HRESULT SecManagerImpl_Destroy(SecManagerImpl* This);
|
||||
HRESULT SecManagerImpl_Construct(IUnknown *pUnkOuter, LPVOID *ppobj);
|
||||
|
||||
static IInternetSecurityManagerVtbl VT_SecManagerImpl =
|
||||
{
|
||||
SecManagerImpl_QueryInterface,
|
||||
SecManagerImpl_AddRef,
|
||||
SecManagerImpl_Release,
|
||||
SecManagerImpl_SetSecuritySite,
|
||||
SecManagerImpl_GetSecuritySite,
|
||||
SecManagerImpl_MapUrlToZone,
|
||||
SecManagerImpl_GetSecurityId,
|
||||
SecManagerImpl_ProcessUrlAction,
|
||||
SecManagerImpl_QueryCustomPolicy,
|
||||
SecManagerImpl_SetZoneMapping,
|
||||
SecManagerImpl_GetZoneMappings
|
||||
};
|
||||
|
||||
static HRESULT WINAPI SecManagerImpl_QueryInterface(IInternetSecurityManager* iface,REFIID riid,void** ppvObject)
|
||||
{
|
||||
SecManagerImpl *This = (SecManagerImpl *)iface;
|
||||
|
||||
TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppvObject);
|
||||
|
||||
/* Perform a sanity check on the parameters.*/
|
||||
if ( (This==0) || (ppvObject==0) )
|
||||
return E_INVALIDARG;
|
||||
|
||||
/* Initialize the return parameter */
|
||||
*ppvObject = 0;
|
||||
|
||||
/* Compare the riid with the interface IDs implemented by this object.*/
|
||||
if (IsEqualIID(&IID_IUnknown, riid) ||
|
||||
IsEqualIID(&IID_IInternetSecurityManager, riid))
|
||||
*ppvObject = iface;
|
||||
|
||||
/* Check that we obtained an interface.*/
|
||||
if ((*ppvObject)==0)
|
||||
return E_NOINTERFACE;
|
||||
|
||||
/* Query Interface always increases the reference count by one when it is successful */
|
||||
SecManagerImpl_AddRef(iface);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static ULONG WINAPI SecManagerImpl_AddRef(IInternetSecurityManager* iface)
|
||||
{
|
||||
SecManagerImpl *This = (SecManagerImpl *)iface;
|
||||
|
||||
TRACE("(%p)\n",This);
|
||||
|
||||
return InterlockedIncrement(&This->ref);
|
||||
}
|
||||
|
||||
static ULONG WINAPI SecManagerImpl_Release(IInternetSecurityManager* iface)
|
||||
{
|
||||
SecManagerImpl *This = (SecManagerImpl *)iface;
|
||||
ULONG ref;
|
||||
TRACE("(%p)\n",This);
|
||||
|
||||
ref = InterlockedDecrement(&This->ref);
|
||||
|
||||
/* destroy the object if there's no more reference on it */
|
||||
if (ref==0){
|
||||
|
||||
SecManagerImpl_Destroy(This);
|
||||
|
||||
return 0;
|
||||
}
|
||||
return ref;
|
||||
}
|
||||
|
||||
static HRESULT SecManagerImpl_Destroy(SecManagerImpl* This)
|
||||
{
|
||||
TRACE("(%p)\n",This);
|
||||
|
||||
HeapFree(GetProcessHeap(),0,This);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT SecManagerImpl_Construct(IUnknown *pUnkOuter, LPVOID *ppobj)
|
||||
{
|
||||
SecManagerImpl *This;
|
||||
|
||||
TRACE("(%p,%p)\n",pUnkOuter,ppobj);
|
||||
This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This));
|
||||
|
||||
/* Initialize the virtual function table. */
|
||||
This->lpvtbl1 = &VT_SecManagerImpl;
|
||||
This->ref = 1;
|
||||
|
||||
*ppobj = This;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI SecManagerImpl_SetSecuritySite(IInternetSecurityManager *iface,
|
||||
IInternetSecurityMgrSite *pSite)
|
||||
{
|
||||
FIXME("(%p)->(%p)\n", iface, pSite);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI SecManagerImpl_GetSecuritySite(IInternetSecurityManager *iface,
|
||||
IInternetSecurityMgrSite **ppSite)
|
||||
{
|
||||
FIXME("(%p)->( %p)\n", iface, ppSite);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI SecManagerImpl_MapUrlToZone(IInternetSecurityManager *iface,
|
||||
LPCWSTR pwszUrl, DWORD *pdwZone,
|
||||
DWORD dwFlags)
|
||||
{
|
||||
FIXME("(%p)->(%s %p %08lx)\n", iface, debugstr_w(pwszUrl), pdwZone, dwFlags);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI SecManagerImpl_GetSecurityId(IInternetSecurityManager *iface,
|
||||
LPCWSTR pwszUrl,
|
||||
BYTE *pbSecurityId, DWORD *pcbSecurityId,
|
||||
DWORD dwReserved)
|
||||
{
|
||||
FIXME("(%p)->(%s %p %p %08lx)\n", iface, debugstr_w(pwszUrl), pbSecurityId, pcbSecurityId,
|
||||
dwReserved);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
||||
static HRESULT WINAPI SecManagerImpl_ProcessUrlAction(IInternetSecurityManager *iface,
|
||||
LPCWSTR pwszUrl, DWORD dwAction,
|
||||
BYTE *pPolicy, DWORD cbPolicy,
|
||||
BYTE *pContext, DWORD cbContext,
|
||||
DWORD dwFlags, DWORD dwReserved)
|
||||
{
|
||||
FIXME("(%p)->(%s %08lx %p %08lx %p %08lx %08lx %08lx)\n", iface, debugstr_w(pwszUrl), dwAction,
|
||||
pPolicy, cbPolicy, pContext, cbContext, dwFlags, dwReserved);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
||||
static HRESULT WINAPI SecManagerImpl_QueryCustomPolicy(IInternetSecurityManager *iface,
|
||||
LPCWSTR pwszUrl, REFGUID guidKey,
|
||||
BYTE **ppPolicy, DWORD *pcbPolicy,
|
||||
BYTE *pContext, DWORD cbContext,
|
||||
DWORD dwReserved)
|
||||
{
|
||||
FIXME("(%p)->(%s %s %p %p %p %08lx %08lx )\n", iface, debugstr_w(pwszUrl), debugstr_guid(guidKey),
|
||||
ppPolicy, pcbPolicy, pContext, cbContext, dwReserved);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI SecManagerImpl_SetZoneMapping(IInternetSecurityManager *iface,
|
||||
DWORD dwZone, LPCWSTR pwszPattern, DWORD dwFlags)
|
||||
{
|
||||
FIXME("(%p)->(%08lx %s %08lx)\n", iface, dwZone, debugstr_w(pwszPattern),dwFlags);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI SecManagerImpl_GetZoneMappings(IInternetSecurityManager *iface,
|
||||
DWORD dwZone, IEnumString **ppenumString, DWORD dwFlags)
|
||||
{
|
||||
FIXME("(%p)->(%08lx %p %08lx)\n", iface, dwZone, ppenumString,dwFlags);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* CoInternetCreateSecurityManager (URLMON.@)
|
||||
*
|
||||
*/
|
||||
HRESULT WINAPI CoInternetCreateSecurityManager( IServiceProvider *pSP,
|
||||
IInternetSecurityManager **ppSM, DWORD dwReserved )
|
||||
{
|
||||
TRACE("%p %p %ld\n", pSP, ppSM, dwReserved );
|
||||
return SecManagerImpl_Construct(NULL, (void**) ppSM);
|
||||
}
|
|
@ -1061,18 +1061,6 @@ HRESULT WINAPI CoInternetQueryInfo(LPCWSTR pwzUrl, QUERYOPTION QueryOption,
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* CoInternetCreateSecurityManager (URLMON.@)
|
||||
*
|
||||
*/
|
||||
typedef void *IInternetSecurityManager;
|
||||
HRESULT CoInternetCreateSecurityManager( IServiceProvider *pSP,
|
||||
IInternetSecurityManager **ppSM, DWORD dwReserved )
|
||||
{
|
||||
FIXME("%p %ld\n", pSP, dwReserved );
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static BOOL URLMON_IsBinary(LPVOID pBuffer, DWORD cbSize)
|
||||
{
|
||||
unsigned int i, binarycount = 0;
|
||||
|
|
|
@ -29,6 +29,8 @@
|
|||
|
||||
#include "wine/debug.h"
|
||||
|
||||
#include "winuser.h"
|
||||
#include "urlmon.h"
|
||||
#include "urlmon_main.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(urlmon);
|
||||
|
@ -77,18 +79,152 @@ HRESULT WINAPI URLMON_DllCanUnloadNow(void)
|
|||
return S_FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* DllGetClassObject (URLMON.@)
|
||||
*/
|
||||
HRESULT WINAPI URLMON_DllGetClassObject(REFCLSID rclsid, REFIID riid,
|
||||
LPVOID *ppv)
|
||||
{
|
||||
FIXME("(%p, %p, %p): stub\n", debugstr_guid(rclsid),
|
||||
debugstr_guid(riid), ppv);
|
||||
|
||||
return CLASS_E_CLASSNOTAVAILABLE;
|
||||
|
||||
/******************************************************************************
|
||||
* Urlmon ClassFactory
|
||||
*/
|
||||
typedef struct {
|
||||
IClassFactory ITF_IClassFactory;
|
||||
|
||||
DWORD ref;
|
||||
HRESULT (*pfnCreateInstance)(IUnknown *pUnkOuter, LPVOID *ppObj);
|
||||
} IClassFactoryImpl;
|
||||
|
||||
struct object_creation_info
|
||||
{
|
||||
const CLSID *clsid;
|
||||
HRESULT (*pfnCreateInstance)(IUnknown *pUnkOuter, LPVOID *ppObj);
|
||||
};
|
||||
|
||||
static const struct object_creation_info object_creation[] =
|
||||
{
|
||||
{ &CLSID_InternetSecurityManager, &SecManagerImpl_Construct }
|
||||
};
|
||||
|
||||
static HRESULT WINAPI
|
||||
CF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj)
|
||||
{
|
||||
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
||||
|
||||
if (IsEqualGUID(riid, &IID_IUnknown)
|
||||
|| IsEqualGUID(riid, &IID_IClassFactory))
|
||||
{
|
||||
IClassFactory_AddRef(iface);
|
||||
*ppobj = This;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static ULONG WINAPI CF_AddRef(LPCLASSFACTORY iface)
|
||||
{
|
||||
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
||||
return InterlockedIncrement(&This->ref);
|
||||
}
|
||||
|
||||
static ULONG WINAPI CF_Release(LPCLASSFACTORY iface)
|
||||
{
|
||||
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
||||
|
||||
ULONG ref = InterlockedDecrement(&This->ref);
|
||||
|
||||
if (ref == 0)
|
||||
HeapFree(GetProcessHeap(), 0, This);
|
||||
|
||||
return ref;
|
||||
}
|
||||
|
||||
|
||||
static HRESULT WINAPI CF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter,
|
||||
REFIID riid, LPVOID *ppobj)
|
||||
{
|
||||
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
||||
HRESULT hres;
|
||||
LPUNKNOWN punk;
|
||||
|
||||
TRACE("(%p)->(%p,%s,%p)\n",This,pOuter,debugstr_guid(riid),ppobj);
|
||||
|
||||
*ppobj = NULL;
|
||||
if(SUCCEEDED(hres = This->pfnCreateInstance(pOuter, (LPVOID *) &punk))) {
|
||||
hres = IUnknown_QueryInterface(punk, riid, ppobj);
|
||||
IUnknown_Release(punk);
|
||||
}
|
||||
return hres;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI CF_LockServer(LPCLASSFACTORY iface,BOOL dolock)
|
||||
{
|
||||
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
||||
FIXME("(%p)->(%d),stub!\n",This,dolock);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static IClassFactoryVtbl CF_Vtbl =
|
||||
{
|
||||
CF_QueryInterface,
|
||||
CF_AddRef,
|
||||
CF_Release,
|
||||
CF_CreateInstance,
|
||||
CF_LockServer
|
||||
};
|
||||
|
||||
/*******************************************************************************
|
||||
* DllGetClassObject [URLMON.@]
|
||||
* Retrieves class object from a DLL object
|
||||
*
|
||||
* NOTES
|
||||
* Docs say returns STDAPI
|
||||
*
|
||||
* PARAMS
|
||||
* rclsid [I] CLSID for the class object
|
||||
* riid [I] Reference to identifier of interface for class object
|
||||
* ppv [O] Address of variable to receive interface pointer for riid
|
||||
*
|
||||
* RETURNS
|
||||
* Success: S_OK
|
||||
* Failure: CLASS_E_CLASSNOTAVAILABLE, E_OUTOFMEMORY, E_INVALIDARG,
|
||||
* E_UNEXPECTED
|
||||
*/
|
||||
|
||||
DWORD WINAPI URLMON_DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
|
||||
{
|
||||
int i;
|
||||
IClassFactoryImpl *factory;
|
||||
|
||||
TRACE("(%s,%s,%p)\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
|
||||
|
||||
if ( !IsEqualGUID( &IID_IClassFactory, riid )
|
||||
&& ! IsEqualGUID( &IID_IUnknown, riid) )
|
||||
return E_NOINTERFACE;
|
||||
|
||||
for (i=0; i < sizeof(object_creation)/sizeof(object_creation[0]); i++)
|
||||
{
|
||||
if (IsEqualGUID(object_creation[i].clsid, rclsid))
|
||||
break;
|
||||
}
|
||||
|
||||
if (i == sizeof(object_creation)/sizeof(object_creation[0]))
|
||||
{
|
||||
FIXME("%s: no class found.\n", debugstr_guid(rclsid));
|
||||
return CLASS_E_CLASSNOTAVAILABLE;
|
||||
}
|
||||
|
||||
factory = HeapAlloc(GetProcessHeap(), 0, sizeof(*factory));
|
||||
if (factory == NULL) return E_OUTOFMEMORY;
|
||||
|
||||
factory->ITF_IClassFactory.lpVtbl = &CF_Vtbl;
|
||||
factory->ref = 1;
|
||||
|
||||
factory->pfnCreateInstance = object_creation[i].pfnCreateInstance;
|
||||
|
||||
*ppv = &(factory->ITF_IClassFactory);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* DllRegisterServerEx (URLMON.@)
|
||||
*/
|
||||
|
|
|
@ -25,6 +25,8 @@
|
|||
#include "winbase.h"
|
||||
|
||||
extern HINSTANCE URLMON_hInstance;
|
||||
extern HRESULT SecManagerImpl_Construct(IUnknown *pUnkOuter, LPVOID *ppobj);
|
||||
|
||||
|
||||
#define ICOM_THIS_MULTI(impl,field,iface) impl* const This=(impl*)((char*)(iface) - offsetof(impl,field))
|
||||
|
||||
|
|
|
@ -563,6 +563,102 @@ interface IInternetSession : IUnknown
|
|||
[in] DWORD dwReserved);
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* IInternetSecurityMgrSite interface
|
||||
*/
|
||||
[
|
||||
local,
|
||||
object,
|
||||
uuid(79eac9ed-baf9-11ce-8c82-00aa004ba90b),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IInternetSecurityMgrSite : IUnknown
|
||||
{
|
||||
HRESULT GetWindow(
|
||||
[out] HWND *phwnd);
|
||||
|
||||
HRESULT EnableModeless(
|
||||
[in] BOOL fEnable);
|
||||
};
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
* IInternetSecurityManager interface
|
||||
*/
|
||||
cpp_quote("#define SID_SInternetSecurityManager IID_IInternetSecurityManager")
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(79eac9ee-baf9-11ce-8c82-00aa004ba90b),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IInternetSecurityManager : IUnknown
|
||||
{
|
||||
HRESULT SetSecuritySite(
|
||||
[in, unique] IInternetSecurityMgrSite *pSite);
|
||||
|
||||
HRESULT GetSecuritySite(
|
||||
[out] IInternetSecurityMgrSite **ppSite);
|
||||
|
||||
HRESULT MapUrlToZone(
|
||||
[in] LPCWSTR pwszUrl,
|
||||
[out] DWORD *pdwZone,
|
||||
[in] DWORD dwFlags);
|
||||
|
||||
cpp_quote("#define MAX_SIZE_SECURITY_ID 512")
|
||||
|
||||
HRESULT GetSecurityId(
|
||||
[in] LPCWSTR pwszUrl,
|
||||
[out, size_is(*pcbSecurityId)] BYTE *pbSecurityId,
|
||||
[in, out] DWORD *pcbSecurityId,
|
||||
[in] DWORD dwReserved);
|
||||
|
||||
|
||||
typedef enum {
|
||||
PUAF_DEFAULT = 0x00,
|
||||
PUAF_NOUI = 0x01,
|
||||
PUAF_ISFILE = 0x02,
|
||||
PUAF_WARN_IF_DENIED = 0x04,
|
||||
PUAF_FORCEUI_FOREGROUND = 0x08,
|
||||
PUAF_CHECK_TIPS = 0x10
|
||||
} PUAF;
|
||||
|
||||
HRESULT ProcessUrlAction(
|
||||
[in] LPCWSTR pwszUrl,
|
||||
[in] DWORD dwAction,
|
||||
[out, size_is(cbPolicy)] BYTE *pPolicy,
|
||||
[in] DWORD cbPolicy,
|
||||
[in] BYTE *pContext,
|
||||
[in] DWORD cbContext,
|
||||
[in] DWORD dwFlags,
|
||||
[in] DWORD dwReserved);
|
||||
|
||||
HRESULT QueryCustomPolicy(
|
||||
[in] LPCWSTR pwszUrl,
|
||||
[in] REFGUID guidKey,
|
||||
[out, size_is(*pcbPolicy)] BYTE **ppPolicy,
|
||||
[out] DWORD *pcbPolicy,
|
||||
[in] BYTE *pContext,
|
||||
[in] DWORD cbContext,
|
||||
[in] DWORD dwReserved);
|
||||
|
||||
typedef enum {
|
||||
SZM_CREATE = 0x0,
|
||||
SZM_DELETE = 0x1
|
||||
} SZM_FLAGS;
|
||||
|
||||
HRESULT SetZoneMapping(
|
||||
[in] DWORD dwZone,
|
||||
[in] LPCWSTR lpszPattern,
|
||||
[in] DWORD dwFlags);
|
||||
|
||||
HRESULT GetZoneMappings(
|
||||
[in] DWORD dwZone,
|
||||
[out] IEnumString **ppenumString,
|
||||
[in] DWORD dwFlags);
|
||||
};
|
||||
cpp_quote("DEFINE_GUID(CLSID_InternetSecurityManager, 0x7b8a2d94, 0x0ac9, 0x11d1, 0x89, 0x6c, 0x00, 0xc0, 0x4f, 0xB6, 0xbf, 0xc4);")
|
||||
|
||||
cpp_quote("DEFINE_GUID(IID_IAsyncMoniker, 0x79EAC9D3, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);")
|
||||
cpp_quote("DEFINE_GUID(CLSID_StdURLMoniker, 0x79EAC9E0, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);")
|
||||
|
||||
|
|
Loading…
Reference in a new issue