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");
226 hres = IClassFactory_QueryInterface(pcf, iid,
ppv);
227 IClassFactory_Release(pcf);
229 TRACE(
"-- pointer to class factory: %p\n",*
ppv);
287 TRACE(
"(%p)\n", lpmal);
340 TRACE(
"(%p)\n", psf);
345 hres = ISF_Desktop_Constructor(
NULL, &IID_IShellFolder, (
LPVOID*)psf);
347 TRACE(
"-- %p->(%p) 0x%08x\n", psf, *psf,
hres);
371 const IID * riidInst;
400 return (LPCLASSFACTORY)lpclf;
420 TRACE(
"-- E_NOINTERFACE\n");
431 TRACE(
"(%p)->(count=%u)\n",
This, refCount - 1);
443 TRACE(
"(%p)->(count=%u)\n",
This, refCount + 1);
449 TRACE(
"-- destroying IClassFactory(%p)\n",
This);
483 TRACE(
"%p->(0x%x), not implemented\n",
This, fLock);
487static const IClassFactoryVtbl
dclfvt =
508 TRACE(
"%s %p %p %p %s\n",
531 exstyle &= ~WS_EX_ACCEPTFILES;
556 *
p = lpDropFileStruct->
pt;
557 bRet = lpDropFileStruct->
fNC;
577 TRACE(
"(%p, %x, %p, %u)\n", hDrop,lFile,lpszFile,lLength);
579 if(!lpDropFileStruct)
goto end;
581 lpDrop = (
LPSTR) lpDropFileStruct + lpDropFileStruct->
pFiles;
583 if(lpDropFileStruct->
fWide) {
586 if(lpszFile && lFile != 0xFFFFFFFF) {
588 if(lpszFileW ==
NULL) {
606 i = (lFile == 0xFFFFFFFF) ?
i : 0;
612 if (!lpszFile )
goto end;
632 TRACE(
"(%p, %x, %p, %u)\n", hDrop,lFile,lpszwFile,lLength);
634 if(!lpDropFileStruct)
goto end;
641 if(lpszwFile && lFile != 0xFFFFFFFF) {
643 if(lpszFileA ==
NULL) {
662 i = (lFile == 0xFFFFFFFF) ?
i : 0;
668 if ( !lpszwFile)
goto end;
687 grfFlags, grfMode, dwDisposition, ppstg, puCodePage);
689 hres = IPropertySetStorage_Open(psstg, fmtid, grfMode, ppstg);
691 switch(dwDisposition) {
694 IPropertyStorage_Release(*ppstg);
695 hres = IPropertySetStorage_Delete(psstg, fmtid);
704 hres = IPropertySetStorage_Create(psstg, fmtid, pclsid,
705 grfFlags, grfMode, ppstg);
712 prop.ulKind = PRSPEC_PROPID;
714 hres = IPropertyStorage_ReadMultiple(*ppstg, 1, &prop, &
ret);
718 *puCodePage =
ret.u.iVal;
729 ULONG cpspec,
const PROPSPEC *rgpspec, PROPVARIANT *rgvar)
734 FIXME(
"%p %u %u %p %p\n", pps, uCodePage, cpspec, rgpspec, rgvar);
736 memset(rgvar, 0, cpspec*
sizeof(PROPVARIANT));
737 hres = IPropertyStorage_ReadMultiple(pps, cpspec, rgpspec, rgvar);
745 prop.ulKind = PRSPEC_PROPID;
747 hres = IPropertyStorage_ReadMultiple(pps, 1, &prop, &
ret);
751 uCodePage =
ret.u.iVal;
754 hres = IPropertyStorage_Stat(pps, &
stat);
766 ULONG cpspec,
const PROPSPEC *rgpspec, PROPVARIANT *rgvar,
PROPID propidNameFirst)
772 FIXME(
"%p %p %u %p %p %d\n", pps, uCodePage, cpspec, rgpspec, rgvar, propidNameFirst);
774 hres = IPropertyStorage_Stat(pps, &
stat);
778 if(uCodePage && *uCodePage)
784 prop.ulKind = PRSPEC_PROPID;
786 hres = IPropertyStorage_ReadMultiple(pps, 1, &prop, &
ret);
799 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)
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 const struct @560 InterfaceTable[]
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