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);
487 static const IClassFactoryVtbl
dclfvt =
508 TRACE(
"%s %p %p %p %s\n",
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);
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)
HRESULT WINAPI CoGetMalloc(DWORD context, IMalloc **imalloc)
static ULONG WINAPI IDefClF_fnAddRef(LPCLASSFACTORY iface)
static HRESULT WINAPI IDefClF_fnLockServer(LPCLASSFACTORY iface, BOOL fLock)
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
int _cdecl swprintf(const WCHAR *,...)
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
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)
#define RegCloseKey(hKey)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
#define IsEqualIID(riid1, riid2)
static const struct @540 InterfaceTable[]
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)