2 * Copyright 2012 Alistair Leslie-Hughes
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
29 #include "scrrun_private.h"
31 #include "wine/debug.h"
33 WINE_DEFAULT_DEBUG_CHANNEL(scrrun
);
35 static HRESULT WINAPI
filesys_QueryInterface(IFileSystem3
*iface
, REFIID riid
, void **ppvObject
)
37 TRACE("%p %s %p\n", iface
, debugstr_guid(riid
), ppvObject
);
39 if ( IsEqualGUID( riid
, &IID_IFileSystem3
) ||
40 IsEqualGUID( riid
, &IID_IFileSystem
) ||
41 IsEqualGUID( riid
, &IID_IDispatch
) ||
42 IsEqualGUID( riid
, &IID_IUnknown
) )
46 else if ( IsEqualGUID( riid
, &IID_IDispatchEx
))
48 TRACE("Interface IDispatchEx not supported - returning NULL\n");
52 else if ( IsEqualGUID( riid
, &IID_IObjectWithSite
))
54 TRACE("Interface IObjectWithSite not supported - returning NULL\n");
60 FIXME("Unsupported interface %s\n", debugstr_guid(riid
));
64 IFileSystem3_AddRef(iface
);
69 static ULONG WINAPI
filesys_AddRef(IFileSystem3
*iface
)
76 static ULONG WINAPI
filesys_Release(IFileSystem3
*iface
)
83 static HRESULT WINAPI
filesys_GetTypeInfoCount(IFileSystem3
*iface
, UINT
*pctinfo
)
85 TRACE("(%p)->(%p)\n", iface
, pctinfo
);
91 static HRESULT WINAPI
filesys_GetTypeInfo(IFileSystem3
*iface
, UINT iTInfo
,
92 LCID lcid
, ITypeInfo
**ppTInfo
)
94 TRACE("(%p)->(%u %u %p)\n", iface
, iTInfo
, lcid
, ppTInfo
);
95 return get_typeinfo(IFileSystem3_tid
, ppTInfo
);}
97 static HRESULT WINAPI
filesys_GetIDsOfNames(IFileSystem3
*iface
, REFIID riid
,
98 LPOLESTR
*rgszNames
, UINT cNames
,
99 LCID lcid
, DISPID
*rgDispId
)
104 TRACE("(%p)->(%s %p %u %u %p)\n", iface
, debugstr_guid(riid
), rgszNames
, cNames
, lcid
, rgDispId
);
106 hr
= get_typeinfo(IFileSystem3_tid
, &typeinfo
);
109 hr
= ITypeInfo_GetIDsOfNames(typeinfo
, rgszNames
, cNames
, rgDispId
);
110 ITypeInfo_Release(typeinfo
);
116 static HRESULT WINAPI
filesys_Invoke(IFileSystem3
*iface
, DISPID dispIdMember
,
117 REFIID riid
, LCID lcid
, WORD wFlags
,
118 DISPPARAMS
*pDispParams
, VARIANT
*pVarResult
,
119 EXCEPINFO
*pExcepInfo
, UINT
*puArgErr
)
124 TRACE("(%p)->(%d %s %d %d %p %p %p %p)\n", iface
, dispIdMember
, debugstr_guid(riid
),
125 lcid
, wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
127 hr
= get_typeinfo(IFileSystem3_tid
, &typeinfo
);
130 hr
= ITypeInfo_Invoke(typeinfo
, &iface
, dispIdMember
, wFlags
,
131 pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
132 ITypeInfo_Release(typeinfo
);
138 static HRESULT WINAPI
filesys_get_Drives(IFileSystem3
*iface
, IDriveCollection
**ppdrives
)
140 FIXME("%p %p\n", iface
, ppdrives
);
145 static HRESULT WINAPI
filesys_BuildPath(IFileSystem3
*iface
, BSTR Path
,
146 BSTR Name
, BSTR
*pbstrResult
)
148 FIXME("%p %s %s %p\n", iface
, debugstr_w(Path
), debugstr_w(Name
), pbstrResult
);
153 static HRESULT WINAPI
filesys_GetDriveName(IFileSystem3
*iface
, BSTR Path
,
156 FIXME("%p %s %p\n", iface
, debugstr_w(Path
), pbstrResult
);
161 static HRESULT WINAPI
filesys_GetParentFolderName(IFileSystem3
*iface
, BSTR Path
,
164 FIXME("%p %s %p\n", iface
, debugstr_w(Path
), pbstrResult
);
169 static HRESULT WINAPI
filesys_GetFileName(IFileSystem3
*iface
, BSTR Path
,
172 FIXME("%p %s %p\n", iface
, debugstr_w(Path
), pbstrResult
);
177 static HRESULT WINAPI
filesys_GetBaseName(IFileSystem3
*iface
, BSTR Path
,
180 FIXME("%p %s %p\n", iface
, debugstr_w(Path
), pbstrResult
);
185 static HRESULT WINAPI
filesys_GetExtensionName(IFileSystem3
*iface
, BSTR Path
,
188 FIXME("%p %s %p\n", iface
, debugstr_w(Path
), pbstrResult
);
193 static HRESULT WINAPI
filesys_GetAbsolutePathName(IFileSystem3
*iface
, BSTR Path
,
196 FIXME("%p %s %p\n", iface
, debugstr_w(Path
), pbstrResult
);
201 static HRESULT WINAPI
filesys_GetTempName(IFileSystem3
*iface
, BSTR
*pbstrResult
)
203 FIXME("%p %p\n", iface
, pbstrResult
);
208 static HRESULT WINAPI
filesys_DriveExists(IFileSystem3
*iface
, BSTR DriveSpec
,
209 VARIANT_BOOL
*pfExists
)
211 FIXME("%p %s %p\n", iface
, debugstr_w(DriveSpec
), pfExists
);
216 static HRESULT WINAPI
filesys_FileExists(IFileSystem3
*iface
, BSTR FileSpec
,
217 VARIANT_BOOL
*pfExists
)
219 FIXME("%p %s %p\n", iface
, debugstr_w(FileSpec
), pfExists
);
224 static HRESULT WINAPI
filesys_FolderExists(IFileSystem3
*iface
, BSTR FolderSpec
,
225 VARIANT_BOOL
*pfExists
)
227 FIXME("%p %s %p\n", iface
, debugstr_w(FolderSpec
), pfExists
);
232 static HRESULT WINAPI
filesys_GetDrive(IFileSystem3
*iface
, BSTR DriveSpec
,
235 FIXME("%p %s %p\n", iface
, debugstr_w(DriveSpec
), ppdrive
);
240 static HRESULT WINAPI
filesys_GetFile(IFileSystem3
*iface
, BSTR FilePath
,
243 FIXME("%p %s %p\n", iface
, debugstr_w(FilePath
), ppfile
);
248 static HRESULT WINAPI
filesys_GetFolder(IFileSystem3
*iface
, BSTR FolderPath
,
251 FIXME("%p %s %p\n", iface
, debugstr_w(FolderPath
), ppfolder
);
256 static HRESULT WINAPI
filesys_GetSpecialFolder(IFileSystem3
*iface
,
257 SpecialFolderConst SpecialFolder
,
260 FIXME("%p %d %p\n", iface
, SpecialFolder
, ppfolder
);
265 static HRESULT WINAPI
filesys_DeleteFile(IFileSystem3
*iface
, BSTR FileSpec
,
268 FIXME("%p %s %d\n", iface
, debugstr_w(FileSpec
), Force
);
273 static HRESULT WINAPI
filesys_DeleteFolder(IFileSystem3
*iface
, BSTR FolderSpec
,
276 FIXME("%p %s %d\n", iface
, debugstr_w(FolderSpec
), Force
);
281 static HRESULT WINAPI
filesys_MoveFile(IFileSystem3
*iface
, BSTR Source
,
284 FIXME("%p %s %s\n", iface
, debugstr_w(Source
), debugstr_w(Destination
));
289 static HRESULT WINAPI
filesys_MoveFolder(IFileSystem3
*iface
,BSTR Source
,
292 FIXME("%p %s %s\n", iface
, debugstr_w(Source
), debugstr_w(Destination
));
297 static HRESULT WINAPI
filesys_CopyFile(IFileSystem3
*iface
, BSTR Source
,
298 BSTR Destination
, VARIANT_BOOL OverWriteFiles
)
300 FIXME("%p %s %s %d\n", iface
, debugstr_w(Source
), debugstr_w(Destination
), OverWriteFiles
);
305 static HRESULT WINAPI
filesys_CopyFolder(IFileSystem3
*iface
, BSTR Source
,
306 BSTR Destination
, VARIANT_BOOL OverWriteFiles
)
308 FIXME("%p %s %s %d\n", iface
, debugstr_w(Source
), debugstr_w(Destination
), OverWriteFiles
);
313 static HRESULT WINAPI
filesys_CreateFolder(IFileSystem3
*iface
, BSTR Path
,
316 FIXME("%p %s %p\n", iface
, debugstr_w(Path
), ppfolder
);
321 static HRESULT WINAPI
filesys_CreateTextFile(IFileSystem3
*iface
, BSTR FileName
,
322 VARIANT_BOOL Overwrite
, VARIANT_BOOL Unicode
,
325 FIXME("%p %s %d %d %p\n", iface
, debugstr_w(FileName
), Overwrite
, Unicode
, ppts
);
330 static HRESULT WINAPI
filesys_OpenTextFile(IFileSystem3
*iface
, BSTR FileName
,
331 IOMode IOMode
, VARIANT_BOOL Create
,
332 Tristate Format
, ITextStream
**ppts
)
334 FIXME("%p %s %d %d %d %p\n", iface
, debugstr_w(FileName
), IOMode
, Create
, Format
, ppts
);
339 static HRESULT WINAPI
filesys_GetStandardStream(IFileSystem3
*iface
,
340 StandardStreamTypes StandardStreamType
,
341 VARIANT_BOOL Unicode
,
344 FIXME("%p %d %d %p\n", iface
, StandardStreamType
, Unicode
, ppts
);
349 static HRESULT WINAPI
filesys_GetFileVersion(IFileSystem3
*iface
, BSTR FileName
,
352 FIXME("%p %s %p\n", iface
, debugstr_w(FileName
), FileVersion
);
357 static const struct IFileSystem3Vtbl filesys_vtbl
=
359 filesys_QueryInterface
,
362 filesys_GetTypeInfoCount
,
364 filesys_GetIDsOfNames
,
368 filesys_GetDriveName
,
369 filesys_GetParentFolderName
,
372 filesys_GetExtensionName
,
373 filesys_GetAbsolutePathName
,
377 filesys_FolderExists
,
381 filesys_GetSpecialFolder
,
383 filesys_DeleteFolder
,
388 filesys_CreateFolder
,
389 filesys_CreateTextFile
,
390 filesys_OpenTextFile
,
391 filesys_GetStandardStream
,
392 filesys_GetFileVersion
395 static IFileSystem3 filesystem
= { &filesys_vtbl
};
397 HRESULT WINAPI
FileSystem_CreateInstance(IClassFactory
*iface
, IUnknown
*outer
, REFIID riid
, void **ppv
)
399 TRACE("(%p %s %p)\n", outer
, debugstr_guid(riid
), ppv
);
401 return IFileSystem3_QueryInterface(&filesystem
, riid
, ppv
);