Commit b54389b3 authored by Hidenori Takeshima's avatar Hidenori Takeshima Committed by Alexandre Julliard

Added some stubs.

parent 63231c52
......@@ -718,7 +718,8 @@ twain/twain_32.dll$(DLLEXT): dummy user32.dll$(DLLEXT) gdi32.dll$(DLLEXT) \
url/url.dll$(DLLEXT): dummy ntdll.dll$(DLLEXT)
@cd url && $(MAKE) url.dll$(DLLEXT)
urlmon/urlmon.dll$(DLLEXT): dummy ole32.dll$(DLLEXT) ntdll.dll$(DLLEXT)
urlmon/urlmon.dll$(DLLEXT): dummy ole32.dll$(DLLEXT) kernel32.dll$(DLLEXT) \
ntdll.dll$(DLLEXT)
@cd urlmon && $(MAKE) urlmon.dll$(DLLEXT)
user/user32.dll$(DLLEXT): dummy gdi32.dll$(DLLEXT) advapi32.dll$(DLLEXT) \
......
......@@ -3,11 +3,14 @@ TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = urlmon.dll
EXTRALIBS = $(LIBUUID)
LDDLLFLAGS = @LDDLLFLAGS@
SYMBOLFILE = $(MODULE).tmp.o
C_SRCS = \
comimpl.c \
moniker.c \
umon.c \
urlmon_main.c
......
/*
* A basic implementation for COM DLL implementor.
*
* Copyright (C) 2002 Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
*
* 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
*/
#ifndef WINE_COMIMPL_H
#define WINE_COMIMPL_H
/*
This code provides a basic thread-safe COM implementation
including aggregation(and an IClassFactory implementation).
This code is based on my quartz code.
The usage of this library is:
1) copy comimpl.h and comimpl.c.
2) implement the global class entries 'COMIMPL_ClassList'.
3) export COMIMPL_DllMain, COMIMPL_DllGetClassObject and
COMIMPL_DllCanUnloadNow.
4) add 'comimpl' to your debug channels.
5) implement your IUnknown as a thunk to call
COMIMPL_IUnkImpl.punk methods.
6) provide pointers of vtables in constructor.
7) optionally, you can edit comimpl.h and/or comimpl.c.
A sample allocator of class COne that supports
two interface IOne and ITwo is:
const COMIMPL_CLASSENTRY COMIMPL_ClassList[] =
{
{ &CLSID_COne, &COne_AllocObj },
{ NULL, NULL } << the last entry must be NULL >>
};
typedef struct COne
{
COMIMPL_IUnkImpl vfunk; << must be the first member of this struct >>
struct { ICOM_VFIELD(IOne); } vfone;
struct { ICOM_VFIELD(ITwo); } vftwo;
<< ... >>
} COne;
#define COne_THIS(iface,member) COne* This = ((COne*)(((char*)iface)-offsetof(COne,member)))
static COMIMPL_IFEntry IFEntries[] =
{
<< all supported interfaces >>
{ &IID_IOne, offsetof(COne,vfone)-offsetof(COne,vfunk) },
{ &IID_ITwo, offsetof(COne,vftwo)-offsetof(COne,vfunk) },
};
static void COne_Destructor(IUnknown* iface)
{
COne_THIS(iface,vfunk);
<< ... implement destructor ... >>
}
HRESULT COne_AllocObj(IUnknown* punkOuter,void** ppobj)
{
COne* This;
This = (COne*)COMIMPL_AllocObj( sizeof(COne) );
if ( This == NULL ) return E_OUTOFMEMORY;
COMIMPL_IUnkInit( &This->vfunk, punkOuter );
This->vfunk.pEntries = IFEntries;
This->vfunk.dwEntries = sizeof(IFEntries)/sizeof(IFEntries[0]);
This->vfunk.pOnFinalRelease = COne_Destructor;
ICOM_VTBL(&This->vfone) = &ione;
ICOM_VTBL(&This->vftwo) = &itwo;
<< ... implement constructor ... >>
<< if error occurs in constructing, you can call simply
punk::Release() and return HRESULT. >>
*ppobj = (void*)(&This->vfunk);
return S_OK; << return S_OK if succeeded >>
}
*/
/* if per-thread initialization is needed, uncomment the following line */
/*#define COMIMPL_PERTHREAD_INIT*/
/* If an own heap is needed, customize the following line */
#define COMIMPL_hHeap GetProcessHeap()
typedef HRESULT (*COMIMPL_pCreateIUnknown)(IUnknown* punkOuter,void** ppobj);
typedef void (*COMIMPL_pOnFinalRelease)(IUnknown* punkInner);
typedef struct COMIMPL_IFEntry COMIMPL_IFEntry;
typedef struct COMIMPL_IFDelegation COMIMPL_IFDelegation;
typedef struct COMIMPL_IUnkImpl COMIMPL_IUnkImpl;
struct COMIMPL_IFEntry
{
const IID* piid; /* interface ID. */
size_t ofsVTPtr; /* offset from IUnknown. */
};
struct COMIMPL_IFDelegation
{
struct COMIMPL_IFDelegation* pNext;
HRESULT (*pOnQueryInterface)(
IUnknown* punk, const IID* piid, void** ppobj );
};
/* COMIMPL_IUnkimpl must be aligned for InterlockedExchangeAdd. */
#include <pshpack4.h>
struct COMIMPL_IUnkImpl
{
/* pointer of IUnknown interface. */
ICOM_VFIELD(IUnknown);
/* array of supported IIDs and offsets. */
const COMIMPL_IFEntry* pEntries;
DWORD dwEntries;
/* list of delegation handlers. */
COMIMPL_IFDelegation* pDelegationFirst;
/* called on final release. */
COMIMPL_pOnFinalRelease pOnFinalRelease;
/* IUnknown fields. */
LONG ref;
IUnknown* punkControl;
};
#include <poppack.h>
typedef struct COMIMPL_CLASSENTRY
{
const CLSID* pclsid;
COMIMPL_pCreateIUnknown pCreateIUnk;
} COMIMPL_CLASSENTRY;
extern const COMIMPL_CLASSENTRY COMIMPL_ClassList[]; /* must be provided */
void COMIMPL_IUnkInit( COMIMPL_IUnkImpl* pImpl, IUnknown* punkOuter );
void COMIMPL_IUnkAddDelegationHandler(
COMIMPL_IUnkImpl* pImpl, COMIMPL_IFDelegation* pDelegation );
BOOL WINAPI COMIMPL_DllMain(
HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpvReserved );
HRESULT WINAPI COMIMPL_DllGetClassObject(
const CLSID* pclsid,const IID* piid,void** ppv);
HRESULT WINAPI COMIMPL_DllCanUnloadNow(void);
void* COMIMPL_AllocObj( DWORD dwSize );
void COMIMPL_FreeObj( void* pobj ); /* for internal use only. */
#endif /* WINE_COMIMPL_H */
......@@ -48,27 +48,6 @@ HRESULT WINAPI CreateAsyncBindCtxEx(IBindCtx *ibind, DWORD options,
/***********************************************************************
* CreateURLMoniker (URLMON.@)
*
* Create a url moniker
*
* RETURNS
* S_OK success
* E_OUTOFMEMORY out of memory
* MK_E_SYNTAX not a valid url
*
*/
HRESULT WINAPI CreateURLMoniker(IMoniker *pmkContext, LPCWSTR szURL, IMoniker **ppmk)
{
TRACE("\n");
if (NULL != pmkContext)
FIXME("Non-null pmkContext not implemented\n");
return CreateFileMoniker(szURL, ppmk);
}
/***********************************************************************
* RegisterBindStatusCallback (URLMON.@)
*
* Register a bind status callback
......@@ -146,7 +125,7 @@ HRESULT WINAPI RevokeBindStatusCallback(
*/
HRESULT WINAPI Extract(DWORD Param1, DWORD Param2)
{
TRACE("%lx %lx\n", Param1, Param2);
FIXME("%lx %lx\n", Param1, Param2);
return S_OK;
return E_NOTIMPL;
}
name urlmon
type win32
init COMIMPL_DllMain
import ole32.dll
import kernel32.dll
import ntdll.dll
debug_channels (urlmon win32)
debug_channels (comimpl urlmon)
1 stub CDLGetLongPathNameA
2 stub CDLGetLongPathNameW
......@@ -26,60 +28,60 @@ debug_channels (urlmon win32)
@ stub CopyStgMedium
@ stub CreateAsyncBindCtx
@ stdcall CreateAsyncBindCtxEx(ptr long ptr ptr ptr long) CreateAsyncBindCtxEx
@ stub CreateFormatEnumerator
@ stdcall CreateFormatEnumerator(long ptr ptr) CreateFormatEnumerator
@ stdcall CreateURLMoniker(ptr str ptr) CreateURLMoniker
@ stdcall DllCanUnloadNow() URLMON_DllCanUnloadNow
@ stdcall DllGetClassObject(ptr ptr ptr) URLMON_DllGetClassObject
@ stdcall DllCanUnloadNow() COMIMPL_DllCanUnloadNow
@ stdcall DllGetClassObject(ptr ptr ptr) COMIMPL_DllGetClassObject
@ stdcall DllInstall(long ptr) URLMON_DllInstall
@ stdcall DllRegisterServer() URLMON_DllRegisterServer
@ stdcall DllRegisterServerEx() URLMON_DllRegisterServerEx
@ stdcall DllUnregisterServer() URLMON_DllUnregisterServer
@ stdcall Extract(long long) Extract
@ stub FaultInIEFeature
@ stub FindMediaType
@ stub FindMediaTypeClass
@ stub FindMimeFromData
@ stub GetClassFileOrMime
@ stub GetClassURL
@ stdcall FindMediaType(str ptr) FindMediaType
@ stdcall FindMediaTypeClass(ptr str ptr long) FindMediaTypeClass
@ stdcall FindMimeFromData(ptr wstr ptr long wstr long ptr long) FindMimeFromData
@ stdcall GetClassFileOrMime(ptr wstr ptr long wstr long ptr) GetClassFileOrMime
@ stdcall GetClassURL(wstr ptr) GetClassURL
@ stub GetComponentIDFromCLSSPEC
@ stub GetMarkOfTheWeb
@ stub GetSoftwareUpdateInfo
@ stub HlinkGoBack
@ stub HlinkGoForward
@ stub HlinkNavigateMoniker
@ stub HlinkNavigateString
@ stub HlinkSimpleNavigateToMoniker
@ stub HlinkSimpleNavigateToString
@ stub IsAsyncMoniker
@ stub IsLoggingEnabledA
@ stub IsLoggingEnabledW
@ stub IsValidURL
@ stub MkParseDisplayNameEx
@ stdcall GetSoftwareUpdateInfo(wstr ptr) GetSoftwareUpdateInfo
@ stdcall HlinkGoBack(ptr) HlinkGoBack
@ stdcall HlinkGoForward(ptr) HlinkGoForward
@ stdcall HlinkNavigateMoniker(ptr ptr) HlinkNavigateMoniker
@ stdcall HlinkNavigateString(ptr wstr) HlinkNavigateString
@ stdcall HlinkSimpleNavigateToMoniker(ptr wstr wstr ptr ptr ptr long long) HlinkSimpleNavigateToMoniker
@ stdcall HlinkSimpleNavigateToString(wstr wstr wstr ptr ptr ptr long long) HlinkSimpleNavigateToString
@ stdcall IsAsyncMoniker(ptr) IsAsyncMoniker
@ stdcall IsLoggingEnabledA(str) IsLoggingEnabledA
@ stdcall IsLoggingEnabledW(wstr) IsLoggingEnabledW
@ stdcall IsValidURL(ptr wstr long) IsValidURL
@ stdcall MkParseDisplayNameEx(ptr wstr ptr ptr) MkParseDisplayNameEx
@ stdcall ObtainUserAgentString(long str ptr) ObtainUserAgentString
@ stub PrivateCoInstall
@ stdcall RegisterBindStatusCallback(ptr ptr ptr long) RegisterBindStatusCallback
@ stub RegisterFormatEnumerator
@ stub RegisterMediaTypeClass
@ stub RegisterMediaTypes
@ stub ReleaseBindInfo
@ stdcall RegisterFormatEnumerator(ptr ptr long) RegisterFormatEnumerator
@ stdcall RegisterMediaTypeClass(ptr long ptr ptr long) RegisterMediaTypeClass
@ stdcall RegisterMediaTypes(long ptr ptr) RegisterMediaTypes
@ stdcall ReleaseBindInfo(ptr) ReleaseBindInfo
@ stdcall RevokeBindStatusCallback(ptr ptr) RevokeBindStatusCallback
@ stub RevokeFormatEnumerator
@ stub SetSoftwareUpdateAdvertisementState
@ stdcall RevokeFormatEnumerator(ptr ptr) RevokeFormatEnumerator
@ stdcall SetSoftwareUpdateAdvertisementState(wstr long long long) SetSoftwareUpdateAdvertisementState
@ stub URLDownloadA
@ stub URLDownloadToCacheFileA
@ stub URLDownloadToCacheFileW
@ stub URLDownloadToFileA
@ stub URLDownloadToFileW
@ stdcall URLDownloadToCacheFileA(ptr str ptr long long ptr) URLDownloadToCacheFileA
@ stdcall URLDownloadToCacheFileW(ptr wstr ptr long long ptr) URLDownloadToCacheFileW
@ stdcall URLDownloadToFileA(ptr str str long ptr) URLDownloadToFileA
@ stdcall URLDownloadToFileW(ptr wstr wstr long ptr) URLDownloadToFileW
@ stub URLDownloadW
@ stub URLOpenBlockingStreamA
@ stub URLOpenBlockingStreamW
@ stub URLOpenPullStreamA
@ stub URLOpenPullStreamW
@ stub URLOpenStreamA
@ stub URLOpenStreamW
@ stdcall URLOpenBlockingStreamA(ptr str ptr long ptr) URLOpenBlockingStreamA
@ stdcall URLOpenBlockingStreamW(ptr wstr ptr long ptr) URLOpenBlockingStreamW
@ stdcall URLOpenPullStreamA(ptr str long ptr) URLOpenPullStreamA
@ stdcall URLOpenPullStreamW(ptr wstr long ptr) URLOpenPullStreamW
@ stdcall URLOpenStreamA(ptr str long ptr) URLOpenStreamA
@ stdcall URLOpenStreamW(ptr wstr long ptr) URLOpenStreamW
@ stub UrlMkBuildVersion
@ stub UrlMkGetSessionOption
@ stdcall UrlMkGetSessionOption(long ptr long ptr long) UrlMkGetSessionOption
@ stdcall UrlMkSetSessionOption(long ptr long long) UrlMkSetSessionOption
@ stub WriteHitLogging
@ stdcall WriteHitLogging(ptr) WriteHitLogging
@ stub ZonesReInit
......@@ -21,10 +21,22 @@
#include "windef.h"
#include "winerror.h"
#include "wtypes.h"
#include "ole2.h"
#include "urlmon.h"
#include "comimpl.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(win32);
WINE_DEFAULT_DEBUG_CHANNEL(urlmon);
const COMIMPL_CLASSENTRY COMIMPL_ClassList[] =
{
/* list of exported classes */
{ NULL, NULL }
};
/***********************************************************************
* DllInstall (URLMON.@)
......@@ -38,28 +50,6 @@ HRESULT WINAPI URLMON_DllInstall(BOOL bInstall, LPCWSTR cmdline)
}
/***********************************************************************
* DllCanUnloadNow (URLMON.@)
*/
HRESULT WINAPI URLMON_DllCanUnloadNow(void)
{
FIXME("(void): stub\n");
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;
}
/***********************************************************************
* DllRegisterServer (URLMON.@)
*/
HRESULT WINAPI URLMON_DllRegisterServer(void)
......@@ -118,7 +108,7 @@ HRESULT WINAPI CoInternetGetSession(DWORD dwSessionMode,
ERR("dwReserved: %ld, must be zero\n", dwReserved);
}
return S_OK;
return E_NOTIMPL;
}
......@@ -133,5 +123,260 @@ HRESULT WINAPI ObtainUserAgentString(DWORD dwOption, LPCSTR pcszUAOut, DWORD *cb
ERR("dwOption: %ld, must be zero\n", dwOption);
}
return S_OK;
return E_NOTIMPL;
}
/*****************************************************************************
* stubs
*/
typedef struct
{
DWORD dwStructSize;
LPSTR lpszLoggedUrlName;
SYSTEMTIME StartTime;
SYSTEMTIME EndTime;
LPSTR lpszExtendedInfo;
} HIT_LOGGING_INFO;
typedef struct
{
ULONG cbSize;
DWORD dwFlags;
DWORD dwAdState;
LPWSTR szTitle;
LPWSTR szAbstract;
LPWSTR szHREF;
DWORD dwInstalledVersionMS;
DWORD dwInstalledVersionLS;
DWORD dwUpdateVersionMS;
DWORD dwUpdateVersionLS;
DWORD dwAdvertisedVersionMS;
DWORD dwAdvertisedVersionLS;
DWORD dwReserved;
} SOFTDISTINFO;
HRESULT WINAPI CreateFormatEnumerator(UINT cFormatEtcs,FORMATETC* pFormatEtcs,IEnumFORMATETC** ppenum)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI FindMediaType(LPCSTR pszTypes,CLIPFORMAT* pcfTypes)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI FindMediaTypeClass(IBindCtx* pbc,LPCSTR pszType,CLSID* pclsid,DWORD dwReserved)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI FindMimeFromData(IBindCtx* pbc,LPCWSTR pwszURL,void* pbuf,DWORD cb,LPCWSTR pwszMimeProposed,DWORD dwMimeFlags,LPWSTR* ppwszMimeOut,DWORD dwReserved)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI GetClassFileOrMime(IBindCtx* pbc,LPCWSTR pwszFilename,void* pbuf,DWORD cb,LPCWSTR pwszMime,DWORD dwReserved,CLSID* pclsid)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI GetClassURL(LPCWSTR pwszURL,CLSID* pclsid)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI GetSoftwareUpdateInfo(LPCWSTR pwszDistUnit,SOFTDISTINFO* psdi)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI HlinkGoBack(IUnknown* punk)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI HlinkGoForward(IUnknown* punk)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI HlinkNavigateMoniker(IUnknown* punk,IMoniker* pmonTarget)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI HlinkNavigateString(IUnknown* punk,LPCWSTR szTarget)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI HlinkSimpleNavigateToMoniker(
IMoniker* pmonTarget,LPCWSTR pwszLocation,LPCWSTR pwszTargetFrame,
IUnknown* punk,IBindCtx* pbc,IBindStatusCallback* pbscb,
DWORD dwHLNF,DWORD dwReserved)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI HlinkSimpleNavigateToString(
LPCWSTR pwszTarget,LPCWSTR pwszLocation,LPCWSTR pwszTargetFrame,
IUnknown* punk,IBindCtx* pbc,IBindStatusCallback* pbscb,
DWORD dwHLNF,DWORD dwReserved)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI IsAsyncMoniker(IMoniker* pmon)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
BOOL WINAPI IsLoggingEnabledA(LPCSTR pszURL)
{
FIXME("() stub\n");
return FALSE;
}
BOOL WINAPI IsLoggingEnabledW(LPCWSTR pwszURL)
{
FIXME("() stub\n");
return FALSE;
}
HRESULT WINAPI IsValidURL(IBindCtx* pbc,LPCWSTR pwszURL,DWORD dwReserved)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI MkParseDisplayNameEx(IBindCtx* pbc,LPCWSTR pwszDisplayName,ULONG* pulCharEaten,IMoniker** ppmon)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI RegisterFormatEnumerator(IBindCtx* pbc,IEnumFORMATETC* penum,DWORD dwReserved)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI RegisterMediaTypeClass(IBindCtx* pbc,UINT cTypes,const LPCSTR* pszTypes,CLSID* pclsid,DWORD dwReserved)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI RegisterMediaTypes(UINT cTypes,const LPCSTR* pszTypes,CLIPFORMAT* pcfTypes)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
void WINAPI ReleaseBindInfo(BINDINFO* pbi)
{
FIXME("() stub\n");
}
HRESULT WINAPI RevokeFormatEnumerator(IBindCtx* pbc,IEnumFORMATETC* penum)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI SetSoftwareUpdateAdvertisementState(LPCWSTR pwszDistUnit,DWORD dwAdvState,DWORD dwAdvVerMS,DWORD dwAdvVerLS)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI URLDownloadToCacheFileA(IUnknown* punk,LPCSTR pszURL,LPSTR pszNameBuf,DWORD dwNameBufLen,DWORD dwReserved,IBindStatusCallback* pbscb)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI URLDownloadToCacheFileW(IUnknown* punk,LPCWSTR pwszURL,LPWSTR pwszNameBuf,DWORD dwNameBufLen,DWORD dwReserved,IBindStatusCallback* pbscb)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI URLDownloadToFileA(IUnknown* punk,LPCSTR pszURL,LPCSTR pszFileName,DWORD dwReserved,IBindStatusCallback* pbscb)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI URLDownloadToFileW(IUnknown* punk,LPCWSTR pwszURL,LPCWSTR pwszFileName,DWORD dwReserved,IBindStatusCallback* pbscb)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI URLOpenBlockingStreamA(IUnknown* punk,LPCSTR pszURL,IStream** ppstream,DWORD dwReserved,IBindStatusCallback* pbscb)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI URLOpenBlockingStreamW(IUnknown* punk,LPCWSTR pwszURL,IStream** ppstream,DWORD dwReserved,IBindStatusCallback* pbscb)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI URLOpenPullStreamA(IUnknown* punk,LPCSTR pszURL,DWORD dwReserved,IBindStatusCallback* pbscb)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI URLOpenPullStreamW(IUnknown* punk,LPCWSTR pwszURL,DWORD dwReserved,IBindStatusCallback* pbscb)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI URLOpenStreamA(IUnknown* punk,LPCSTR pszURL,DWORD dwReserved,IBindStatusCallback* pbscb)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI URLOpenStreamW(IUnknown* punk,LPCWSTR pwszURL,DWORD dwReserved,IBindStatusCallback* pbscb)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
HRESULT WINAPI UrlMkGetSessionOption(DWORD dwOpt,void* pvBuf,DWORD dwBufLen,DWORD* pdwLen,DWORD dwReserved)
{
FIXME("() stub\n");
return E_NOTIMPL;
}
BOOL WINAPI WriteHitLogging(HIT_LOGGING_INFO* pli)
{
FIXME("() stub\n");
return FALSE;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment