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
30 #include "wine/debug.h"
32 WINE_DEFAULT_DEBUG_CHANNEL(scrrun
);
34 static HRESULT WINAPI
filesys_QueryInterface(IFileSystem3
*iface
, REFIID riid
, void **ppvObject
)
36 TRACE("%p %s %p\n", iface
, debugstr_guid(riid
), ppvObject
);
38 if ( IsEqualGUID( riid
, &IID_IFileSystem3
) ||
39 IsEqualGUID( riid
, &IID_IFileSystem
) ||
40 IsEqualGUID( riid
, &IID_IDispatch
) ||
41 IsEqualGUID( riid
, &IID_IUnknown
) )
45 else if ( IsEqualGUID( riid
, &IID_IDispatchEx
))
47 TRACE("Interface IDispatchEx not supported - returning NULL\n");
51 else if ( IsEqualGUID( riid
, &IID_IObjectWithSite
))
53 TRACE("Interface IObjectWithSite not supported - returning NULL\n");
59 FIXME("Unsupported interface %s\n", debugstr_guid(riid
));
63 IFileSystem3_AddRef(iface
);
68 static ULONG WINAPI
filesys_AddRef(IFileSystem3
*iface
)
75 static ULONG WINAPI
filesys_Release(IFileSystem3
*iface
)
82 static HRESULT WINAPI
filesys_GetTypeInfoCount(IFileSystem3
*iface
, UINT
*pctinfo
)
84 TRACE("(%p)->(%p)\n", iface
, pctinfo
);
90 static HRESULT WINAPI
filesys_GetTypeInfo(IFileSystem3
*iface
, UINT iTInfo
,
91 LCID lcid
, ITypeInfo
**ppTInfo
)
93 FIXME("(%p)->(%u %u %p)\n", iface
, iTInfo
, lcid
, ppTInfo
);
98 static HRESULT WINAPI
filesys_GetIDsOfNames(IFileSystem3
*iface
, REFIID riid
,
99 LPOLESTR
*rgszNames
, UINT cNames
,
100 LCID lcid
, DISPID
*rgDispId
)
102 FIXME("(%p)->(%s %p %u %u %p)\n", iface
, debugstr_guid(riid
), rgszNames
, cNames
,
108 static HRESULT WINAPI
filesys_Invoke(IFileSystem3
*iface
, DISPID dispIdMember
,
109 REFIID riid
, LCID lcid
, WORD wFlags
,
110 DISPPARAMS
*pDispParams
, VARIANT
*pVarResult
,
111 EXCEPINFO
*pExcepInfo
, UINT
*puArgErr
)
113 FIXME("(%p)->(%d %s %d %d %p %p %p %p)\n", iface
, dispIdMember
, debugstr_guid(riid
),
114 lcid
, wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
119 static HRESULT WINAPI
filesys_get_Drives(IFileSystem3
*iface
, IDriveCollection
**ppdrives
)
121 FIXME("%p %p\n", iface
, ppdrives
);
126 static HRESULT WINAPI
filesys_BuildPath(IFileSystem3
*iface
, BSTR Path
,
127 BSTR Name
, BSTR
*pbstrResult
)
129 FIXME("%p %s %s %p\n", iface
, debugstr_w(Path
), debugstr_w(Name
), pbstrResult
);
134 static HRESULT WINAPI
filesys_GetDriveName(IFileSystem3
*iface
, BSTR Path
,
137 FIXME("%p %s %p\n", iface
, debugstr_w(Path
), pbstrResult
);
142 static HRESULT WINAPI
filesys_GetParentFolderName(IFileSystem3
*iface
, BSTR Path
,
145 FIXME("%p %s %p\n", iface
, debugstr_w(Path
), pbstrResult
);
150 static HRESULT WINAPI
filesys_GetFileName(IFileSystem3
*iface
, BSTR Path
,
153 FIXME("%p %s %p\n", iface
, debugstr_w(Path
), pbstrResult
);
158 static HRESULT WINAPI
filesys_GetBaseName(IFileSystem3
*iface
, BSTR Path
,
161 FIXME("%p %s %p\n", iface
, debugstr_w(Path
), pbstrResult
);
166 static HRESULT WINAPI
filesys_GetExtensionName(IFileSystem3
*iface
, BSTR Path
,
169 FIXME("%p %s %p\n", iface
, debugstr_w(Path
), pbstrResult
);
174 static HRESULT WINAPI
filesys_GetAbsolutePathName(IFileSystem3
*iface
, BSTR Path
,
177 FIXME("%p %s %p\n", iface
, debugstr_w(Path
), pbstrResult
);
182 static HRESULT WINAPI
filesys_GetTempName(IFileSystem3
*iface
, BSTR
*pbstrResult
)
184 FIXME("%p %p\n", iface
, pbstrResult
);
189 static HRESULT WINAPI
filesys_DriveExists(IFileSystem3
*iface
, BSTR DriveSpec
,
190 VARIANT_BOOL
*pfExists
)
192 FIXME("%p %s %p\n", iface
, debugstr_w(DriveSpec
), pfExists
);
197 static HRESULT WINAPI
filesys_FileExists(IFileSystem3
*iface
, BSTR FileSpec
,
198 VARIANT_BOOL
*pfExists
)
200 FIXME("%p %s %p\n", iface
, debugstr_w(FileSpec
), pfExists
);
205 static HRESULT WINAPI
filesys_FolderExists(IFileSystem3
*iface
, BSTR FolderSpec
,
206 VARIANT_BOOL
*pfExists
)
208 FIXME("%p %s %p\n", iface
, debugstr_w(FolderSpec
), pfExists
);
213 static HRESULT WINAPI
filesys_GetDrive(IFileSystem3
*iface
, BSTR DriveSpec
,
216 FIXME("%p %s %p\n", iface
, debugstr_w(DriveSpec
), ppdrive
);
221 static HRESULT WINAPI
filesys_GetFile(IFileSystem3
*iface
, BSTR FilePath
,
224 FIXME("%p %s %p\n", iface
, debugstr_w(FilePath
), ppfile
);
229 static HRESULT WINAPI
filesys_GetFolder(IFileSystem3
*iface
, BSTR FolderPath
,
232 FIXME("%p %s %p\n", iface
, debugstr_w(FolderPath
), ppfolder
);
237 static HRESULT WINAPI
filesys_GetSpecialFolder(IFileSystem3
*iface
,
238 SpecialFolderConst SpecialFolder
,
241 FIXME("%p %d %p\n", iface
, SpecialFolder
, ppfolder
);
246 static HRESULT WINAPI
filesys_DeleteFile(IFileSystem3
*iface
, BSTR FileSpec
,
249 FIXME("%p %s %d\n", iface
, debugstr_w(FileSpec
), Force
);
254 static HRESULT WINAPI
filesys_DeleteFolder(IFileSystem3
*iface
, BSTR FolderSpec
,
257 FIXME("%p %s %d\n", iface
, debugstr_w(FolderSpec
), Force
);
262 static HRESULT WINAPI
filesys_MoveFile(IFileSystem3
*iface
, BSTR Source
,
265 FIXME("%p %s %s\n", iface
, debugstr_w(Source
), debugstr_w(Destination
));
270 static HRESULT WINAPI
filesys_MoveFolder(IFileSystem3
*iface
,BSTR Source
,
273 FIXME("%p %s %s\n", iface
, debugstr_w(Source
), debugstr_w(Destination
));
278 static HRESULT WINAPI
filesys_CopyFile(IFileSystem3
*iface
, BSTR Source
,
279 BSTR Destination
, VARIANT_BOOL OverWriteFiles
)
281 FIXME("%p %s %s %d\n", iface
, debugstr_w(Source
), debugstr_w(Destination
), OverWriteFiles
);
286 static HRESULT WINAPI
filesys_CopyFolder(IFileSystem3
*iface
, BSTR Source
,
287 BSTR Destination
, VARIANT_BOOL OverWriteFiles
)
289 FIXME("%p %s %s %d\n", iface
, debugstr_w(Source
), debugstr_w(Destination
), OverWriteFiles
);
294 static HRESULT WINAPI
filesys_CreateFolder(IFileSystem3
*iface
, BSTR Path
,
297 FIXME("%p %s %p\n", iface
, debugstr_w(Path
), ppfolder
);
302 static HRESULT WINAPI
filesys_CreateTextFile(IFileSystem3
*iface
, BSTR FileName
,
303 VARIANT_BOOL Overwrite
, VARIANT_BOOL Unicode
,
306 FIXME("%p %s %d %d %p\n", iface
, debugstr_w(FileName
), Overwrite
, Unicode
, ppts
);
311 static HRESULT WINAPI
filesys_OpenTextFile(IFileSystem3
*iface
, BSTR FileName
,
312 IOMode IOMode
, VARIANT_BOOL Create
,
313 Tristate Format
, ITextStream
**ppts
)
315 FIXME("%p %s %d %d %d %p\n", iface
, debugstr_w(FileName
), IOMode
, Create
, Format
, ppts
);
320 static HRESULT WINAPI
filesys_GetStandardStream(IFileSystem3
*iface
,
321 StandardStreamTypes StandardStreamType
,
322 VARIANT_BOOL Unicode
,
325 FIXME("%p %d %d %p\n", iface
, StandardStreamType
, Unicode
, ppts
);
330 static HRESULT WINAPI
filesys_GetFileVersion(IFileSystem3
*iface
, BSTR FileName
,
333 FIXME("%p %s %p\n", iface
, debugstr_w(FileName
), FileVersion
);
338 static const struct IFileSystem3Vtbl filesys_vtbl
=
340 filesys_QueryInterface
,
343 filesys_GetTypeInfoCount
,
345 filesys_GetIDsOfNames
,
349 filesys_GetDriveName
,
350 filesys_GetParentFolderName
,
353 filesys_GetExtensionName
,
354 filesys_GetAbsolutePathName
,
358 filesys_FolderExists
,
362 filesys_GetSpecialFolder
,
364 filesys_DeleteFolder
,
369 filesys_CreateFolder
,
370 filesys_CreateTextFile
,
371 filesys_OpenTextFile
,
372 filesys_GetStandardStream
,
373 filesys_GetFileVersion
376 static IFileSystem3 filesystem
= { &filesys_vtbl
};
378 HRESULT WINAPI
FileSystem_CreateInstance(IClassFactory
*iface
, IUnknown
*outer
, REFIID riid
, void **ppv
)
380 TRACE("(%p %s %p)\n", outer
, debugstr_guid(riid
), ppv
);
382 return IFileSystem3_QueryInterface(&filesystem
, riid
, ppv
);