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},
133 TRACE(
"(%p,%s,unk:%p,%s,%p)\n",
138 hres = IClassFactory_CreateInstance(pcf, pUnkOuter, refiid,
ppv);
139 IClassFactory_Release(pcf);
145 swprintf(sKeyName,
L"CLSID\\%s\\InprocServer32", sClassID);
158 dwSize =
sizeof(sDllPath);
162 ERR(
"couldn't load InprocServer32 dll %s\n",
debugstr_w(sDllPath));
166 ERR(
"couldn't find function DllGetClassObject in %s\n",
debugstr_w(sDllPath));
171 TRACE(
"GetClassObject failed 0x%08x\n",
hres);
175 hres = IClassFactory_CreateInstance(pcf, pUnkOuter, refiid,
ppv);
176 IClassFactory_Release(pcf);
187 ERR(
"failed (0x%08x) to create CLSID:%s IID:%s\n",
189 ERR(
"class not found in registry\n");
237 hres = IClassFactory_QueryInterface(pcf, iid,
ppv);
238 IClassFactory_Release(pcf);
240 TRACE(
"-- pointer to class factory: %p\n",*
ppv);
298 TRACE(
"(%p)\n", lpmal);
351 TRACE(
"(%p)\n", psf);
356 hres = ISF_Desktop_Constructor(
NULL, &IID_IShellFolder, (
LPVOID*)psf);
358 TRACE(
"-- %p->(%p) 0x%08x\n", psf, *psf,
hres);
382 const IID * riidInst;
411 return (LPCLASSFACTORY)lpclf;
431 TRACE(
"-- E_NOINTERFACE\n");
442 TRACE(
"(%p)->(count=%u)\n",
This, refCount - 1);
454 TRACE(
"(%p)->(count=%u)\n",
This, refCount + 1);
460 TRACE(
"-- destroying IClassFactory(%p)\n",
This);
494 TRACE(
"%p->(0x%x), not implemented\n",
This, fLock);
498static const IClassFactoryVtbl
dclfvt =
519 TRACE(
"%s %p %p %p %s\n",
542 exstyle &= ~WS_EX_ACCEPTFILES;
567 *
p = lpDropFileStruct->
pt;
568 bRet = lpDropFileStruct->
fNC;
588 TRACE(
"(%p, %x, %p, %u)\n", hDrop,lFile,lpszFile,lLength);
590 if(!lpDropFileStruct)
goto end;
592 lpDrop = (
LPSTR) lpDropFileStruct + lpDropFileStruct->
pFiles;
594 if(lpDropFileStruct->
fWide) {
597 if(lpszFile && lFile != 0xFFFFFFFF) {
599 if(lpszFileW ==
NULL) {
617 i = (lFile == 0xFFFFFFFF) ?
i : 0;
623 if (!lpszFile )
goto end;
643 TRACE(
"(%p, %x, %p, %u)\n", hDrop,lFile,lpszwFile,lLength);
645 if(!lpDropFileStruct)
goto end;
652 if(lpszwFile && lFile != 0xFFFFFFFF) {
654 if(lpszFileA ==
NULL) {
673 i = (lFile == 0xFFFFFFFF) ?
i : 0;
679 if ( !lpszwFile)
goto end;
698 grfFlags, grfMode, dwDisposition, ppstg, puCodePage);
700 hres = IPropertySetStorage_Open(psstg, fmtid, grfMode, ppstg);
702 switch(dwDisposition) {
705 IPropertyStorage_Release(*ppstg);
706 hres = IPropertySetStorage_Delete(psstg, fmtid);
715 hres = IPropertySetStorage_Create(psstg, fmtid, pclsid,
716 grfFlags, grfMode, ppstg);
723 prop.ulKind = PRSPEC_PROPID;
725 hres = IPropertyStorage_ReadMultiple(*ppstg, 1, &prop, &
ret);
729 *puCodePage =
ret.u.iVal;
740 ULONG cpspec,
const PROPSPEC *rgpspec, PROPVARIANT *rgvar)
745 FIXME(
"%p %u %u %p %p\n", pps, uCodePage, cpspec, rgpspec, rgvar);
747 memset(rgvar, 0, cpspec*
sizeof(PROPVARIANT));
748 hres = IPropertyStorage_ReadMultiple(pps, cpspec, rgpspec, rgvar);
756 prop.ulKind = PRSPEC_PROPID;
758 hres = IPropertyStorage_ReadMultiple(pps, 1, &prop, &
ret);
762 uCodePage =
ret.u.iVal;
765 hres = IPropertyStorage_Stat(pps, &
stat);
777 ULONG cpspec,
const PROPSPEC *rgpspec, PROPVARIANT *rgvar,
PROPID propidNameFirst)
783 FIXME(
"%p %p %u %p %p %d\n", pps, uCodePage, cpspec, rgpspec, rgvar, propidNameFirst);
785 hres = IPropertyStorage_Stat(pps, &
stat);
789 if(uCodePage && *uCodePage)
795 prop.ulKind = PRSPEC_PROPID;
797 hres = IPropertyStorage_ReadMultiple(pps, 1, &prop, &
ret);
810 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)
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[]
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)
HRESULT WINAPI SHExtCoCreateInstance(_In_opt_ LPCWSTR aclsid, _In_opt_ const CLSID *clsid, _In_opt_ LPUNKNOWN pUnkOuter, _In_ REFIID refiid, _Out_ LPVOID *ppv)
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)
LPVOID WINAPI SHAlloc(SIZE_T len)
HRESULT WINAPI SHCoCreateInstance(LPCWSTR aclsid, const CLSID *clsid, LPUNKNOWN pUnkOuter, REFIID refiid, LPVOID *ppv)
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
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
#define REGDB_E_CLASSNOTREG
#define CLASS_E_CLASSNOTAVAILABLE
#define HKEY_CLASSES_ROOT
#define SetWindowLongPtrA
BOOL WINAPI IsWindow(_In_opt_ HWND)
#define GetWindowLongPtrA