28#define WIN32_NO_STATUS
31#define NONAMELESSUNION
41#include <wine/unicode.h>
64 {&CLSID_ApplicationAssociationRegistration, ApplicationAssociationRegistration_Constructor},
65 {&CLSID_AutoComplete, IAutoComplete_Constructor},
66 {&CLSID_ControlPanel, IControlPanel_Constructor},
67 {&CLSID_DragDropHelper, IDropTargetHelper_Constructor},
68 {&CLSID_FolderShortcut, FolderShortcut_Constructor},
69 {&CLSID_MyComputer, ISF_MyComputer_Constructor},
70 {&CLSID_MyDocuments, MyDocuments_Constructor},
71 {&CLSID_NetworkPlaces, ISF_NetworkPlaces_Constructor},
72 {&CLSID_Printers, Printers_Constructor},
73 {&CLSID_QueryAssociations, QueryAssociations_Constructor},
74 {&CLSID_RecycleBin, RecycleBin_Constructor},
75 {&CLSID_ShellDesktop, ISF_Desktop_Constructor},
76 {&CLSID_ShellFSFolder, IFSFolder_Constructor},
77 {&CLSID_ShellItem, IShellItem_Constructor},
78 {&CLSID_ShellLink, IShellLink_Constructor},
81 {&CLSID_ExplorerBrowser,ExplorerBrowser_Constructor},
82 {&CLSID_KnownFolderManager, KnownFolderManager_Constructor},
83 {&CLSID_Shell, IShellDispatch_Constructor},
118 TRACE(
"(%p,%s,unk:%p,%s,%p)\n",
123 hres = IClassFactory_CreateInstance(pcf, pUnkOuter, refiid,
ppv);
124 IClassFactory_Release(pcf);
130 swprintf(sKeyName,
L"CLSID\\%s\\InprocServer32", sClassID);
143 dwSize =
sizeof(sDllPath);
147 ERR(
"couldn't load InprocServer32 dll %s\n",
debugstr_w(sDllPath));
151 ERR(
"couldn't find function DllGetClassObject in %s\n",
debugstr_w(sDllPath));
156 TRACE(
"GetClassObject failed 0x%08x\n",
hres);
160 hres = IClassFactory_CreateInstance(pcf, pUnkOuter, refiid,
ppv);
161 IClassFactory_Release(pcf);
172 ERR(
"failed (0x%08x) to create CLSID:%s IID:%s\n",
174 ERR(
"class not found in registry\n");
270 hres = IClassFactory_QueryInterface(pcf, iid,
ppv);
271 IClassFactory_Release(pcf);
273 TRACE(
"-- pointer to class factory: %p\n",*
ppv);
331 TRACE(
"(%p)\n", lpmal);
384 TRACE(
"(%p)\n", psf);
389 hres = ISF_Desktop_Constructor(
NULL, &IID_IShellFolder, (
LPVOID*)psf);
391 TRACE(
"-- %p->(%p) 0x%08x\n", psf, *psf,
hres);
415 const IID * riidInst;
444 return (LPCLASSFACTORY)lpclf;
464 TRACE(
"-- E_NOINTERFACE\n");
475 TRACE(
"(%p)->(count=%u)\n",
This, refCount - 1);
487 TRACE(
"(%p)->(count=%u)\n",
This, refCount + 1);
493 TRACE(
"-- destroying IClassFactory(%p)\n",
This);
515 return This->lpfnCI(pUnkOuter,
riid, ppvObject);
527 TRACE(
"%p->(0x%x), not implemented\n",
This, fLock);
531static const IClassFactoryVtbl
dclfvt =
552 TRACE(
"%s %p %p %p %s\n",
575 exstyle &= ~WS_EX_ACCEPTFILES;
600 *
p = lpDropFileStruct->
pt;
601 bRet = lpDropFileStruct->
fNC;
621 TRACE(
"(%p, %x, %p, %u)\n", hDrop,lFile,lpszFile,lLength);
623 if(!lpDropFileStruct)
goto end;
625 lpDrop = (
LPSTR) lpDropFileStruct + lpDropFileStruct->
pFiles;
627 if(lpDropFileStruct->
fWide) {
630 if(lpszFile && lFile != 0xFFFFFFFF) {
632 if(lpszFileW ==
NULL) {
650 i = (lFile == 0xFFFFFFFF) ?
i : 0;
656 if (!lpszFile )
goto end;
676 TRACE(
"(%p, %x, %p, %u)\n", hDrop,lFile,lpszwFile,lLength);
678 if(!lpDropFileStruct)
goto end;
685 if(lpszwFile && lFile != 0xFFFFFFFF) {
687 if(lpszFileA ==
NULL) {
706 i = (lFile == 0xFFFFFFFF) ?
i : 0;
712 if ( !lpszwFile)
goto end;
731 grfFlags, grfMode, dwDisposition, ppstg, puCodePage);
733 hres = IPropertySetStorage_Open(psstg, fmtid, grfMode, ppstg);
735 switch(dwDisposition) {
738 IPropertyStorage_Release(*ppstg);
739 hres = IPropertySetStorage_Delete(psstg, fmtid);
748 hres = IPropertySetStorage_Create(psstg, fmtid, pclsid,
749 grfFlags, grfMode, ppstg);
756 prop.ulKind = PRSPEC_PROPID;
758 hres = IPropertyStorage_ReadMultiple(*ppstg, 1, &prop, &
ret);
762 *puCodePage =
ret.u.iVal;
773 ULONG cpspec,
const PROPSPEC *rgpspec, PROPVARIANT *rgvar)
778 FIXME(
"%p %u %u %p %p\n", pps, uCodePage, cpspec, rgpspec, rgvar);
780 memset(rgvar, 0, cpspec*
sizeof(PROPVARIANT));
781 hres = IPropertyStorage_ReadMultiple(pps, cpspec, rgpspec, rgvar);
789 prop.ulKind = PRSPEC_PROPID;
791 hres = IPropertyStorage_ReadMultiple(pps, 1, &prop, &
ret);
795 uCodePage =
ret.u.iVal;
798 hres = IPropertyStorage_Stat(pps, &
stat);
810 ULONG cpspec,
const PROPSPEC *rgpspec, PROPVARIANT *rgvar,
PROPID propidNameFirst)
816 FIXME(
"%p %p %u %p %p %d\n", pps, uCodePage, cpspec, rgpspec, rgvar, propidNameFirst);
818 hres = IPropertyStorage_Stat(pps, &
stat);
822 if(uCodePage && *uCodePage)
828 prop.ulKind = PRSPEC_PROPID;
830 hres = IPropertyStorage_ReadMultiple(pps, 1, &prop, &
ret);
843 hres = IPropertyStorage_WriteMultiple(pps, cpspec, rgpspec, rgvar, propidNameFirst);
ACPI_SIZE strlen(const char *String)
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
void shell(int argc, const char *argv[])
const GUID IID_IClassFactory
#define RegCloseKey(hKey)
IClassFactory IClassFactory_iface
LPFNCREATEINSTANCE lpfnCI
HRESULT WINAPI CreateClassMoniker(REFCLSID rclsid, IMoniker **ppmk)
const char * shdebugstr_guid(const struct _GUID *id)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
#define GetProcAddress(x, y)
#define HeapFree(x, y, z)
#define WideCharToMultiByte
#define MultiByteToWideChar
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
HRESULT(CALLBACK * DllGetClassObjectFunc)(REFCLSID clsid, REFIID iid, LPVOID *ppv)
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
const GUID CLSID_UnixDosFolder
const GUID CLSID_UnixFolder
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
static HRESULT WINAPI IDefClF_fnLockServer(LPCLASSFACTORY iface, BOOL fLock)
HRESULT WINAPI SHCreateDefClassObject(REFIID riid, LPVOID *ppv, LPFNCREATEINSTANCE lpfnCI, LPDWORD pcRefDll, REFIID riidInst)
static IClassFactory * IDefClF_fnConstructor(LPFNCREATEINSTANCE lpfnCI, PLONG pcRefDll, REFIID riidInst)
void WINAPI SHFree(LPVOID pv)
static ULONG WINAPI IDefClF_fnRelease(LPCLASSFACTORY iface)
HRESULT WINAPI SHExtCoCreateInstance(_In_opt_ LPCWSTR aclsid, _In_opt_ const CLSID *clsid, _In_opt_ LPUNKNOWN pUnkOuter, _In_ REFIID riid, _Out_ LPVOID *ppv)
HRESULT WINAPI SHCoCreateInstance(LPCWSTR aclsid, const CLSID *clsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppv)
void WINAPI DragFinish(HDROP h)
UINT WINAPI DragQueryFileW(HDROP hDrop, UINT lFile, LPWSTR lpszwFile, UINT lLength)
void WINAPI DragAcceptFiles(HWND hWnd, BOOL b)
HRESULT WINAPI SHPropStgReadMultiple(IPropertyStorage *pps, UINT uCodePage, ULONG cpspec, const PROPSPEC *rgpspec, PROPVARIANT *rgvar)
static const IClassFactoryVtbl dclfvt
HRESULT WINAPI SHPropStgCreate(IPropertySetStorage *psstg, REFFMTID fmtid, const CLSID *pclsid, DWORD grfFlags, DWORD grfMode, DWORD dwDisposition, IPropertyStorage **ppstg, UINT *puCodePage)
HRESULT WINAPI SHPropStgWriteMultiple(IPropertyStorage *pps, UINT *uCodePage, ULONG cpspec, const PROPSPEC *rgpspec, PROPVARIANT *rgvar, PROPID propidNameFirst)
HRESULT(CALLBACK * LPFNCREATEINSTANCE)(IUnknown *pUnkOuter, REFIID riid, LPVOID *ppvObject)
HRESULT WINAPI SHCreateQueryCancelAutoPlayMoniker(IMoniker **moniker)
static const struct @628 InterfaceTable[]
HRESULT WINAPI SH32_ExtCoCreateInstance(_In_opt_ LPCWSTR aclsid, _In_opt_ const CLSID *clsid, _In_opt_ LPUNKNOWN pUnkOuter, _In_ DWORD dwClsCtx, _In_ REFIID riid, _Out_ LPVOID *ppv)
UINT WINAPI DragQueryFileA(HDROP hDrop, UINT lFile, LPSTR lpszFile, UINT lLength)
LPFNCREATEINSTANCE lpfnCI
INT WINAPI SHStringFromGUIDW(REFGUID guid, LPWSTR lpszDest, INT cchMax)
DWORD WINAPI SHCLSIDFromStringAW(LPCVOID clsid, CLSID *id)
HRESULT WINAPI SHGetMalloc(LPMALLOC *lpmal)
BOOL WINAPI DragQueryPoint(HDROP hDrop, POINT *p)
static ULONG WINAPI IDefClF_fnAddRef(LPCLASSFACTORY iface)
static HRESULT WINAPI IDefClF_fnQueryInterface(LPCLASSFACTORY iface, REFIID riid, LPVOID *ppvObj)
DWORD WINAPI SHCLSIDFromStringA(LPCSTR clsid, CLSID *id)
static IDefClFImpl * impl_from_IClassFactory(IClassFactory *iface)
static HRESULT WINAPI IDefClF_fnCreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObject)
DWORD WINAPI SHCLSIDFromStringW(LPCWSTR clsid, CLSID *id)
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
HRESULT WINAPI SH32_CoCreateInstance(LPCWSTR aclsid, const CLSID *clsid, LPUNKNOWN pUnkOuter, DWORD dwClsCtx, REFIID refiid, LPVOID *ppv)
LPVOID WINAPI SHAlloc(SIZE_T len)
DWORD WINAPI SHQueryValueExW(HKEY hKey, LPCWSTR lpszValue, LPDWORD lpReserved, LPDWORD pwType, LPVOID pvData, LPDWORD pcbData)
GLboolean GLboolean GLboolean b
GLfloat GLfloat GLfloat GLfloat h
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
VOID WINAPI CoTaskMemFree(LPVOID ptr)
HRESULT WINAPI CoGetMalloc(DWORD context, IMalloc **imalloc)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
static const CLSID IPropertyStorage UINT *static const PROPSPEC PROPVARIANT *static UINT const PROPSPEC PROPVARIANT PROPID
interface IMalloc * LPMALLOC
#define WS_EX_ACCEPTFILES
#define IsEqualIID(riid1, riid2)
#define IsEqualCLSID(rclsid1, rclsid2)
static __inline BOOL SHELL_OsIsUnicode(void)
#define CONTAINING_RECORD(address, type, field)
#define LOAD_WITH_ALTERED_SEARCH_PATH
#define REGDB_E_CLASSNOTREG
#define CLASS_E_CLASSNOTAVAILABLE
#define HKEY_CLASSES_ROOT
#define SetWindowLongPtrA
BOOL WINAPI IsWindow(_In_opt_ HWND)
#define GetWindowLongPtrA