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},
116 static const WCHAR sCLSID[] = {
'C',
'L',
'S',
'I',
'D',
'\\',
'\0'};
118 static const WCHAR sInProcServer32[] = {
'\\',
'I',
'n',
'p',
'r',
'o',
'c',
'S',
'e',
'r',
'v',
'e',
'r',
'3',
'2',
'\0'};
119 static const WCHAR sLoadWithoutCOM[] = {
'L',
'o',
'a',
'd',
'W',
'i',
't',
'h',
'o',
'u',
't',
'C',
'O',
'M',
'\0'};
136 TRACE(
"(%p,%s,unk:%p,%s,%p)\n",
141 hres = IClassFactory_CreateInstance(pcf, pUnkOuter, refiid,
ppv);
142 IClassFactory_Release(pcf);
150 lstrcatW(sKeyName, sInProcServer32);
163 dwSize =
sizeof(sDllPath);
167 ERR(
"couldn't load InprocServer32 dll %s\n",
debugstr_w(sDllPath));
171 ERR(
"couldn't find function DllGetClassObject in %s\n",
debugstr_w(sDllPath));
176 TRACE(
"GetClassObject failed 0x%08x\n",
hres);
180 hres = IClassFactory_CreateInstance(pcf, pUnkOuter, refiid,
ppv);
181 IClassFactory_Release(pcf);
192 ERR(
"failed (0x%08x) to create CLSID:%s IID:%s\n",
194 ERR(
"class not found in registry\n");
231 hres = IClassFactory_QueryInterface(pcf, iid,
ppv);
232 IClassFactory_Release(pcf);
234 TRACE(
"-- pointer to class factory: %p\n",*
ppv);
292 TRACE(
"(%p)\n", lpmal);
345 TRACE(
"(%p)\n", psf);
350 hres = ISF_Desktop_Constructor(
NULL, &IID_IShellFolder, (
LPVOID*)psf);
352 TRACE(
"-- %p->(%p) 0x%08x\n", psf, *psf,
hres);
376 const IID * riidInst;
405 return (LPCLASSFACTORY)lpclf;
425 TRACE(
"-- E_NOINTERFACE\n");
436 TRACE(
"(%p)->(count=%u)\n",
This, refCount - 1);
448 TRACE(
"(%p)->(count=%u)\n",
This, refCount + 1);
454 TRACE(
"-- destroying IClassFactory(%p)\n",
This);
488 TRACE(
"%p->(0x%x), not implemented\n",
This, fLock);
492 static const IClassFactoryVtbl
dclfvt =
513 TRACE(
"%s %p %p %p %s\n",
561 *
p = lpDropFileStruct->
pt;
562 bRet = lpDropFileStruct->
fNC;
582 TRACE(
"(%p, %x, %p, %u)\n", hDrop,lFile,lpszFile,lLength);
584 if(!lpDropFileStruct)
goto end;
586 lpDrop = (
LPSTR) lpDropFileStruct + lpDropFileStruct->
pFiles;
588 if(lpDropFileStruct->
fWide) {
591 if(lpszFile && lFile != 0xFFFFFFFF) {
593 if(lpszFileW ==
NULL) {
611 i = (lFile == 0xFFFFFFFF) ?
i : 0;
617 if (!lpszFile )
goto end;
637 TRACE(
"(%p, %x, %p, %u)\n", hDrop,lFile,lpszwFile,lLength);
639 if(!lpDropFileStruct)
goto end;
646 if(lpszwFile && lFile != 0xFFFFFFFF) {
648 if(lpszFileA ==
NULL) {
667 i = (lFile == 0xFFFFFFFF) ?
i : 0;
673 if ( !lpszwFile)
goto end;
692 grfFlags, grfMode, dwDisposition, ppstg, puCodePage);
694 hres = IPropertySetStorage_Open(psstg, fmtid, grfMode, ppstg);
696 switch(dwDisposition) {
699 IPropertyStorage_Release(*ppstg);
700 hres = IPropertySetStorage_Delete(psstg, fmtid);
709 hres = IPropertySetStorage_Create(psstg, fmtid, pclsid,
710 grfFlags, grfMode, ppstg);
717 prop.ulKind = PRSPEC_PROPID;
719 hres = IPropertyStorage_ReadMultiple(*ppstg, 1, &prop, &
ret);
723 *puCodePage =
ret.u.iVal;
734 ULONG cpspec,
const PROPSPEC *rgpspec, PROPVARIANT *rgvar)
739 FIXME(
"%p %u %u %p %p\n", pps, uCodePage, cpspec, rgpspec, rgvar);
741 memset(rgvar, 0, cpspec*
sizeof(PROPVARIANT));
742 hres = IPropertyStorage_ReadMultiple(pps, cpspec, rgpspec, rgvar);
750 prop.ulKind = PRSPEC_PROPID;
752 hres = IPropertyStorage_ReadMultiple(pps, 1, &prop, &
ret);
756 uCodePage =
ret.u.iVal;
759 hres = IPropertyStorage_Stat(pps, &
stat);
771 ULONG cpspec,
const PROPSPEC *rgpspec, PROPVARIANT *rgvar,
PROPID propidNameFirst)
777 FIXME(
"%p %p %u %p %p %d\n", pps, uCodePage, cpspec, rgpspec, rgvar, propidNameFirst);
779 hres = IPropertyStorage_Stat(pps, &
stat);
783 if(uCodePage && *uCodePage)
789 prop.ulKind = PRSPEC_PROPID;
791 hres = IPropertyStorage_ReadMultiple(pps, 1, &prop, &
ret);
804 hres = IPropertyStorage_WriteMultiple(pps, cpspec, rgpspec, rgvar, propidNameFirst);
IClassFactory IClassFactory_iface
const GUID CLSID_UnixDosFolder
const GUID CLSID_UnixFolder
VOID WINAPI CoTaskMemFree(LPVOID ptr)
WINE_UNICODE_INLINE unsigned int strlenW(const WCHAR *str)
#define WideCharToMultiByte
BOOL WINAPI IsWindow(_In_opt_ HWND)
ACPI_SIZE strlen(const char *String)
static const IClassFactoryVtbl dclfvt
static HRESULT(WINAPI *pSHPropStgCreate)(IPropertySetStorage *
interface IMalloc * LPMALLOC
WINE_DEFAULT_DEBUG_CHANNEL(shell)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
HRESULT WINAPI SHCreateQueryCancelAutoPlayMoniker(IMoniker **moniker)
DWORD WINAPI SHCLSIDFromStringA(LPCSTR clsid, CLSID *id)
void WINAPI DragAcceptFiles(HWND hWnd, BOOL b)
const char * shdebugstr_guid(const struct _GUID *id)
LPFNCREATEINSTANCE lpfnCI
static IDefClFImpl * impl_from_IClassFactory(IClassFactory *iface)
HRESULT WINAPI SHGetMalloc(LPMALLOC *lpmal)
HRESULT(CALLBACK * DllGetClassObjectFunc)(REFCLSID clsid, REFIID iid, LPVOID *ppv)
#define LOAD_WITH_ALTERED_SEARCH_PATH
static __inline BOOL SHELL_OsIsUnicode(void)
static const CLSID IPropertyStorage UINT *static const PROPSPEC PROPVARIANT *static UINT const PROPSPEC PROPVARIANT PROPID
#define CLASS_E_CLASSNOTAVAILABLE
GLfloat GLfloat GLfloat GLfloat h
HRESULT WINAPI SHCreateDefClassObject(REFIID riid, LPVOID *ppv, LPFNCREATEINSTANCE lpfnCI, LPDWORD pcRefDll, REFIID riidInst)
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
LONG WINAPI RegCloseKey(HKEY hKey)
HRESULT WINAPI CoGetMalloc(DWORD context, IMalloc **imalloc)
static ULONG WINAPI IDefClF_fnAddRef(LPCLASSFACTORY iface)
static HRESULT WINAPI IDefClF_fnLockServer(LPCLASSFACTORY iface, BOOL fLock)
static const struct @546 InterfaceTable[]
static IClassFactory * IDefClF_fnConstructor(LPFNCREATEINSTANCE lpfnCI, PLONG pcRefDll, REFIID riidInst)
HRESULT WINAPI SHCoCreateInstance(LPCWSTR aclsid, const CLSID *clsid, LPUNKNOWN pUnkOuter, REFIID refiid, LPVOID *ppv)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
HRESULT(CALLBACK * LPFNCREATEINSTANCE)(IUnknown *pUnkOuter, REFIID riid, LPVOID *ppvObject)
#define GetWindowLongPtrA
UINT WINAPI DragQueryFileA(HDROP hDrop, UINT lFile, LPSTR lpszFile, UINT lLength)
GLboolean GLboolean GLboolean b
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
static HRESULT WINAPI IDefClF_fnQueryInterface(LPCLASSFACTORY iface, REFIID riid, LPVOID *ppvObj)
HRESULT WINAPI SHPropStgWriteMultiple(IPropertyStorage *pps, UINT *uCodePage, ULONG cpspec, const PROPSPEC *rgpspec, PROPVARIANT *rgvar, PROPID propidNameFirst)
static HRESULT WINAPI IDefClF_fnCreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObject)
DWORD WINAPI SHCLSIDFromStringAW(LPCVOID clsid, CLSID *id)
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
DWORD WINAPI SHCLSIDFromStringW(LPCWSTR clsid, CLSID *id)
DWORD WINAPI SHQueryValueExW(HKEY hKey, LPCWSTR lpszValue, LPDWORD lpReserved, LPDWORD pwType, LPVOID pvData, LPDWORD pcbData)
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
#define InterlockedDecrement
#define SetWindowLongPtrA
BOOL WINAPI DragQueryPoint(HDROP hDrop, POINT *p)
REFIID LPVOID * ppvObject
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
_CRTIMP int __cdecl stat(const char *_Filename, struct stat *_Stat)
#define REGDB_E_CLASSNOTREG
#define InterlockedIncrement
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
void shell(int argc, const char *argv[])
HRESULT WINAPI SHPropStgCreate(IPropertySetStorage *psstg, REFFMTID fmtid, const CLSID *pclsid, DWORD grfFlags, DWORD grfMode, DWORD dwDisposition, IPropertyStorage **ppstg, UINT *puCodePage)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
HRESULT WINAPI SHPropStgReadMultiple(IPropertyStorage *pps, UINT uCodePage, ULONG cpspec, const PROPSPEC *rgpspec, PROPVARIANT *rgvar)
#define MultiByteToWideChar
void WINAPI SHFree(LPVOID pv)
void WINAPI DragFinish(HDROP h)
static ULONG WINAPI IDefClF_fnRelease(LPCLASSFACTORY iface)
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LPFNCREATEINSTANCE lpfnCI
#define GetProcAddress(x, y)
#define HKEY_CLASSES_ROOT
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
HRESULT WINAPI CreateClassMoniker(REFCLSID rclsid, IMoniker **ppmk)
#define WS_EX_ACCEPTFILES
const GUID IID_IClassFactory
#define IsEqualCLSID(rclsid1, rclsid2)
UINT WINAPI DragQueryFileW(HDROP hDrop, UINT lFile, LPWSTR lpszwFile, UINT lLength)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
LPVOID WINAPI SHAlloc(SIZE_T len)
#define HeapFree(x, y, z)
INT WINAPI SHStringFromGUIDW(REFGUID guid, LPWSTR lpszDest, INT cchMax)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
#define IsEqualIID(riid1, riid2)
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)