diff --git a/.gitignore b/.gitignore index 070846935e730f38ef468886a2538e8c59e4a7f8..3b22ee6f41f85b7bbde7e8ed54179c87adf8e81b 100644 --- a/.gitignore +++ b/.gitignore @@ -121,6 +121,7 @@ dlls/rpcrt4/tests/server.h dlls/rpcrt4/tests/server_c.c dlls/rpcrt4/tests/server_s.c dlls/scrrun/scrrun.h +dlls/scrrun/tests/scrrun.h dlls/shell32/AUTHORS dlls/sti/sti_wia.h dlls/sti/sti_wia_p.c diff --git a/configure b/configure index c4a49eeeaaf0f1f06763feffb225ca514d8e3a71..f40e0125e4da601d7c97caeefa7fa54adc34907c 100755 --- a/configure +++ b/configure @@ -15291,6 +15291,7 @@ wine_fn_config_dll sccbase enable_sccbase wine_fn_config_dll schannel enable_schannel wine_fn_config_test dlls/schannel/tests schannel_test wine_fn_config_dll scrrun enable_scrrun +wine_fn_config_test dlls/scrrun/tests scrrun_test wine_fn_config_dll secur32 enable_secur32 implib wine_fn_config_test dlls/secur32/tests secur32_test wine_fn_config_dll security enable_security diff --git a/configure.ac b/configure.ac index cfa492cd3758b580d87a4fc2abf9d894fe812de8..7540676493037fb55e2dd328217db8f5758e28b3 100644 --- a/configure.ac +++ b/configure.ac @@ -2797,6 +2797,7 @@ WINE_CONFIG_DLL(sccbase) WINE_CONFIG_DLL(schannel) WINE_CONFIG_TEST(dlls/schannel/tests) WINE_CONFIG_DLL(scrrun) +WINE_CONFIG_TEST(dlls/scrrun/tests) WINE_CONFIG_DLL(secur32,,[implib]) WINE_CONFIG_TEST(dlls/secur32/tests) WINE_CONFIG_DLL(security) diff --git a/dlls/scrrun/tests/Makefile.in b/dlls/scrrun/tests/Makefile.in new file mode 100644 index 0000000000000000000000000000000000000000..44cef8a20d986ed1be01b7faece8cb37dcde0a74 --- /dev/null +++ b/dlls/scrrun/tests/Makefile.in @@ -0,0 +1,9 @@ +TESTDLL = scrrun.dll +IMPORTS = ole32 shlwapi uuid + +C_SRCS = \ + filesystem.c + +IDL_H_SRCS = scrrun.idl + +@MAKE_TEST_RULES@ diff --git a/dlls/scrrun/tests/filesystem.c b/dlls/scrrun/tests/filesystem.c new file mode 100644 index 0000000000000000000000000000000000000000..b86c43c3ba8b9347acde5c35ea02143b03c6d38a --- /dev/null +++ b/dlls/scrrun/tests/filesystem.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2012 Alistair Leslie-Hughes + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#define COBJMACROS +#include <stdio.h> + +#include "windows.h" +#include "ole2.h" +#include "dispex.h" + +#include "wine/test.h" + +#include "initguid.h" +#include "scrrun.h" + +void test_interfaces(void) +{ + HRESULT hr; + IDispatch *disp; + IDispatchEx *dispex; + IFileSystem3 *fs3; + IObjectWithSite *site; + + hr = CoCreateInstance(&CLSID_FileSystemObject, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER, + &IID_IDispatch, (void**)&disp); + if(FAILED(hr)) { + win_skip("Could not create FileSystem object: %08x\n", hr); + return; + } + + hr = IDispatch_QueryInterface(disp, &IID_IFileSystem3, (void**)&fs3); + ok(hr == S_OK, "got 0x%08x, expected 0x%08x\n", hr, S_OK); + IFileSystem3_Release(fs3); + + hr = IDispatch_QueryInterface(disp, &IID_IObjectWithSite, (void**)&site); + ok(hr == E_NOINTERFACE, "got 0x%08x, expected 0x%08x\n", hr, E_NOINTERFACE); + + hr = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (void**)&dispex); + ok(hr == E_NOINTERFACE, "got 0x%08x, expected 0x%08x\n", hr, E_NOINTERFACE); + + IDispatch_Release(disp); +} + +START_TEST(filesystem) +{ + CoInitialize(NULL); + + test_interfaces(); + + + CoUninitialize(); +} diff --git a/dlls/scrrun/tests/scrrun.idl b/dlls/scrrun/tests/scrrun.idl new file mode 100644 index 0000000000000000000000000000000000000000..f1e8984862806d8b9bbd1d5cc2da3f24b783c3fa --- /dev/null +++ b/dlls/scrrun/tests/scrrun.idl @@ -0,0 +1,691 @@ +/* + * Copyright (C) 2012 Alistair Leslie-Hughes + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ +import "unknwn.idl"; +import "objidl.idl"; +import "oaidl.idl"; + +cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") +cpp_quote("#undef CopyFile") +cpp_quote("#undef DeleteFile") +cpp_quote("#undef MoveFile") +cpp_quote("#endif") + +[ + uuid(420B2830-E718-11CF-893D-00A0C9054228), + version(1.0) +] +library Scripting +{ + importlib("stdole2.tlb"); + + interface IDictionary; + interface IDrive; + interface IDriveCollection; + interface IFile; + interface IFileCollection; + interface IFileSystem; + interface IFileSystem3; + interface IFolder; + interface IFolderCollection; + interface IScriptEncoder; + interface ITextStream; + + typedef enum CompareMethod + { + BinaryCompare = 0, + TextCompare = 1, + DatabaseCompare = 2 + } CompareMethod; + + typedef enum IOMode + { + ForReading = 1, + ForWriting = 2, + ForAppending = 8 + } IOMode; + + typedef enum Tristate + { + TristateTrue = 0xffffffff, + TristateFalse = 0, + TristateUseDefault = 0xfffffffe, + TristateMixed = 0xfffffffe + } Tristate; + + typedef enum FileAttribute + { + Normal = 0, + ReadOnly = 1, + Hidden = 2, + System = 4, + Volume = 8, + Directory = 16, + Archive = 32, + Alias = 1024, + Compressed = 2048 + } FileAttribute; + + typedef enum SpecialFolderConst + { + WindowsFolder = 0, + SystemFolder = 1, + TemporaryFolder = 2 + } SpecialFolderConst; + + typedef enum DriveTypeConst + { + UnknownType = 0, + Removable = 1, + Fixed = 2, + Remote = 3, + CDRom = 4, + RamDisk = 5 + } DriveTypeConst; + + typedef enum StandardStreamTypes + { + StdIn = 0, + StdOut = 1, + StdErr = 2 + } StandardStreamTypes; + + [ + odl, + uuid(42C642C1-97E1-11CF-978F-00A02463E06F), + hidden, + dual, + oleautomation + ] + interface IDictionary : IDispatch + { + [id(00000000), propputref] + HRESULT Item([in] VARIANT* Key, [in] VARIANT* pRetItem); + + [id(00000000), propput] + HRESULT Item([in] VARIANT* Key, [in] VARIANT* pRetItem); + + [id(00000000), propget] + HRESULT Item([in] VARIANT* Key, [out, retval] VARIANT* pRetItem); + + [id(0x00000001)] + HRESULT Add([in] VARIANT* Key, [in] VARIANT* Item); + + [id(0x00000002), propget] + HRESULT Count([out, retval] long* pCount); + + [id(0x00000003)] + HRESULT Exists([in] VARIANT* Key, [out, retval] VARIANT_BOOL* pExists); + + [id(0x00000004)] + HRESULT Items([out, retval] VARIANT* pItemsArray); + + [id(0x00000005), propput] + HRESULT Key([in] VARIANT* Key, [in] VARIANT* rhs); + + [id(0x00000006)] + HRESULT Keys([out, retval] VARIANT* pKeysArray); + + [id(0x00000007)] + HRESULT Remove([in] VARIANT* Key); + + [id(0x00000008)] + HRESULT RemoveAll(); + + [id(0x00000009), propput] + HRESULT CompareMode([in] CompareMethod pcomp); + + [id(0x00000009), propget] + HRESULT CompareMode([out, retval] CompareMethod* pcomp); + + [id(DISPID_NEWENUM), restricted] + HRESULT _NewEnum([out, retval] IUnknown** ppunk); + + [id(0x0000000a), propget, hidden] + HRESULT HashVal([in] VARIANT* Key, [out, retval] VARIANT* HashVal); + } + + [ + odl, + uuid(0AB5A3D0-E5B6-11D0-ABF5-00A0C90FFFC0), + hidden, + dual, + nonextensible, + oleautomation + ] + interface IFileSystem : IDispatch + { + [id(0x0000271a), propget] + HRESULT Drives([out, retval] IDriveCollection** ppdrives); + + [id(0x00002710)] + HRESULT BuildPath([in] BSTR Path, [in] BSTR Name, [out, retval] BSTR* pbstrResult); + + [id(0x00002714)] + HRESULT GetDriveName([in] BSTR Path, [out, retval] BSTR* pbstrResult); + + [id(0x00002715)] + HRESULT GetParentFolderName([in] BSTR Path, [out, retval] BSTR* pbstrResult); + + [id(0x00002716)] + HRESULT GetFileName([in] BSTR Path, [out, retval] BSTR* pbstrResult); + + [id(0x00002717)] + HRESULT GetBaseName([in] BSTR Path, [out, retval] BSTR* pbstrResult); + + [id(0x00002718)] + HRESULT GetExtensionName([in] BSTR Path, [out, retval] BSTR* pbstrResult); + + [id(0x00002712)] + HRESULT GetAbsolutePathName([in] BSTR Path, [out, retval] BSTR* pbstrResult); + + [id(0x00002713)] + HRESULT GetTempName([out, retval] BSTR* pbstrResult); + + [id(0x0000271f)] + HRESULT DriveExists([in] BSTR DriveSpec, [out, retval] VARIANT_BOOL* pfExists); + + [id(0x00002720)] + HRESULT FileExists([in] BSTR FileSpec, [out, retval] VARIANT_BOOL* pfExists); + + [id(0x00002721)] + HRESULT FolderExists([in] BSTR FolderSpec, [out, retval] VARIANT_BOOL* pfExists); + + [id(0x0000271b)] + HRESULT GetDrive([in] BSTR DriveSpec, [out, retval] IDrive** ppdrive); + + [id(0x0000271c)] + HRESULT GetFile([in] BSTR FilePath, [out, retval] IFile** ppfile); + + [id(0x0000271d)] + HRESULT GetFolder([in] BSTR FolderPath, [out, retval] IFolder** ppfolder); + + [id(0x0000271e)] + HRESULT GetSpecialFolder([in] SpecialFolderConst SpecialFolder, [out, retval] IFolder** ppfolder); + + [id(0x000004b0)] + HRESULT DeleteFile([in] BSTR FileSpec, [in, optional, defaultvalue(0)] VARIANT_BOOL Force); + + [id(0x000004b1)] + HRESULT DeleteFolder([in] BSTR FolderSpec, [in, optional, defaultvalue(0)] VARIANT_BOOL Force); + + [id(0x000004b4), helpstring("Move a file"), helpcontext(0x00214bab)] + HRESULT MoveFile([in] BSTR Source, [in] BSTR Destination); + + [id(0x000004b5)] + HRESULT MoveFolder([in] BSTR Source, [in] BSTR Destination); + + [id(0x000004b2)] + HRESULT CopyFile([in] BSTR Source, [in] BSTR Destination, + [in, optional, defaultvalue(-1)] VARIANT_BOOL OverWriteFiles); + + [id(0x000004b3)] + HRESULT CopyFolder([in] BSTR Source, [in] BSTR Destination, + [in, optional, defaultvalue(-1)] VARIANT_BOOL OverWriteFiles); + + [id(0x00000460)] + HRESULT CreateFolder([in] BSTR Path, [out, retval] IFolder** ppfolder); + + [id(0x0000044d)] + HRESULT CreateTextFile([in] BSTR FileName, [in, optional, defaultvalue(-1)] VARIANT_BOOL Overwrite, + [in, optional, defaultvalue(0)] VARIANT_BOOL Unicode, [out, retval] ITextStream** ppts); + + [id(0x0000044c)] + HRESULT OpenTextFile([in] BSTR FileName, [in, optional, defaultvalue(1)] IOMode IOMode, + [in, optional, defaultvalue(0)] VARIANT_BOOL Create, + [in, optional, defaultvalue(0)] Tristate Format, + [out, retval] ITextStream** ppts); + } + + [ + odl, + uuid(C7C3F5A1-88A3-11D0-ABCB-00A0C90FFFC0), + hidden, + dual, + nonextensible, + oleautomation + ] + interface IDriveCollection : IDispatch { + [id(00000000)] + HRESULT Item([in] VARIANT Key, [out, retval] IDrive** ppdrive); + + [id(DISPID_NEWENUM), propget, restricted, hidden] + HRESULT _NewEnum([out, retval] IUnknown** ppenum); + + [id(0x00000001), propget] + HRESULT Count([out, retval] long* plCount); + } + + [ + odl, + uuid(C7C3F5A0-88A3-11D0-ABCB-00A0C90FFFC0), + hidden, + dual, + nonextensible, + oleautomation + ] + interface IDrive : IDispatch + { + [id(00000000), propget] + HRESULT Path([out, retval] BSTR* pbstrPath); + + [id(0x00002710), propget] + HRESULT DriveLetter([out, retval] BSTR* pbstrLetter) +; + [id(0x00002711), propget] + HRESULT ShareName([out, retval] BSTR* pbstrShareName); + + [id(0x00002712), propget] + HRESULT DriveType([out, retval] DriveTypeConst* pdt); + + [id(0x00002713), propget] + HRESULT RootFolder([out, retval] IFolder** ppfolder); + + [id(0x00002715), propget] + HRESULT AvailableSpace([out, retval] VARIANT* pvarAvail); + + [id(0x00002714), propget] + HRESULT FreeSpace([out, retval] VARIANT* pvarFree); + + [id(0x00002716), propget] + HRESULT TotalSize([out, retval] VARIANT* pvarTotal); + + [id(0x00002717), propget] + HRESULT VolumeName([out, retval] BSTR* pbstrName); + + [id(0x00002717), propput] + HRESULT VolumeName([in] BSTR pbstrName); + + [id(0x00002718), propget] + HRESULT FileSystem([out, retval] BSTR* pbstrFileSystem); + + [id(0x00002719), propget] + HRESULT SerialNumber([out, retval] long* pulSerialNumber); + + [id(0x0000271a), propget] + HRESULT IsReady([out, retval] VARIANT_BOOL* pfReady); + } + + [ + odl, + uuid(C7C3F5A2-88A3-11D0-ABCB-00A0C90FFFC0), + hidden, + dual, + nonextensible, + oleautomation + ] + interface IFolder : IDispatch + { + [id(00000000), propget] + HRESULT Path([out, retval] BSTR* pbstrPath); + + [id(0x000003e8), propget] + HRESULT Name([out, retval] BSTR* pbstrName); + + [id(0x000003e8), propput] + HRESULT Name([in] BSTR pbstrName); + + [id(0x000003ea), propget] + HRESULT ShortPath([out, retval] BSTR* pbstrPath); + + [id(0x000003e9), propget] + HRESULT ShortName([out, retval] BSTR* pbstrName); + + [id(0x000003ec), propget] + HRESULT Drive([out, retval] IDrive** ppdrive); + + [id(0x000003ed), propget] + HRESULT ParentFolder([out, retval] IFolder** ppfolder); + + [id(0x000003eb), propget] + HRESULT Attributes([out, retval] FileAttribute* pfa); + + [id(0x000003eb), propput] + HRESULT Attributes([in] FileAttribute pfa); + + [id(0x000003ee), propget] + HRESULT DateCreated([out, retval] DATE* pdate); + + [id(0x000003ef), propget] + HRESULT DateLastModified([out, retval] DATE* pdate); + + [id(0x000003f0), propget] + HRESULT DateLastAccessed([out, retval] DATE* pdate); + + [id(0x000003f2), propget] + HRESULT Type([out, retval] BSTR* pbstrType); + + [id(0x000004b1)] + HRESULT Delete([in, optional, defaultvalue(0)] VARIANT_BOOL Force); + + [id(0x000004b3)] + HRESULT Copy([in] BSTR Destination, [in, optional, defaultvalue(-1)] VARIANT_BOOL OverWriteFiles); + + [id(0x000004b5)] + HRESULT Move([in] BSTR Destination); + + [id(0x00002710), propget] + HRESULT IsRootFolder([out, retval] VARIANT_BOOL* pfRootFolder); + + [id(0x000003f1), propget] + HRESULT Size([out, retval] VARIANT* pvarSize); + + [id(0x00002711), propget] + HRESULT SubFolders([out, retval] IFolderCollection** ppfolders); + + [id(0x00002712), propget] + HRESULT Files([out, retval] IFileCollection** ppfiles); + + [id(0x0000044d)] + HRESULT CreateTextFile([in] BSTR FileName, [in, optional, defaultvalue(-1)] VARIANT_BOOL Overwrite, + [in, optional, defaultvalue(0)] VARIANT_BOOL Unicode, [out, retval] ITextStream** ppts); + } + + [ + odl, + uuid(C7C3F5A3-88A3-11D0-ABCB-00A0C90FFFC0), + hidden, + dual, + nonextensible, + oleautomation + ] + interface IFolderCollection : IDispatch + { + [id(0x00000002)] + HRESULT Add([in] BSTR Name, [out, retval] IFolder** ppfolder); + + [id(00000000), propget] + HRESULT Item([in] VARIANT Key, [out, retval] IFolder** ppfolder); + + [id(DISPID_NEWENUM), propget, restricted, hidden] + HRESULT _NewEnum([out, retval] IUnknown** ppenum); + + [id(0x00000001), propget] + HRESULT Count([out, retval] long* plCount); + } + + [ + odl, + uuid(C7C3F5A5-88A3-11D0-ABCB-00A0C90FFFC0), + hidden, + dual, + nonextensible, + oleautomation + ] + interface IFileCollection : IDispatch + { + [id(00000000), propget] + HRESULT Item([in] VARIANT Key, [out, retval] IFile** ppfile); + + [id(DISPID_NEWENUM), propget, restricted, hidden] + HRESULT _NewEnum([out, retval] IUnknown** ppenum); + + [id(0x00000001), propget] + HRESULT Count([out, retval] long* plCount); + } + + [ + odl, + uuid(C7C3F5A4-88A3-11D0-ABCB-00A0C90FFFC0), + hidden, + dual, + nonextensible, + oleautomation + ] + interface IFile : IDispatch + { + [id(00000000), propget] + HRESULT Path([out, retval] BSTR* pbstrPath); + + [id(0x000003e8), propget] + HRESULT Name([out, retval] BSTR* pbstrName); + + [id(0x000003e8), propput] + HRESULT Name([in] BSTR pbstrName); + + [id(0x000003ea), propget] + HRESULT ShortPath([out, retval] BSTR* pbstrPath); + + [id(0x000003e9), propget] + HRESULT ShortName([out, retval] BSTR* pbstrName); + + [id(0x000003ec), propget] + HRESULT Drive([out, retval] IDrive** ppdrive); + + [id(0x000003ed), propget] + HRESULT ParentFolder([out, retval] IFolder** ppfolder); + + [id(0x000003eb), propget] + HRESULT Attributes([out, retval] FileAttribute* pfa); + + [id(0x000003eb), propput] + HRESULT Attributes([in] FileAttribute pfa); + + [id(0x000003ee), propget] + HRESULT DateCreated([out, retval] DATE* pdate); + + [id(0x000003ef), propget] + HRESULT DateLastModified([out, retval] DATE* pdate); + + [id(0x000003f0), propget] + HRESULT DateLastAccessed([out, retval] DATE* pdate); + + [id(0x000003f1), propget] + HRESULT Size([out, retval] VARIANT* pvarSize); + + [id(0x000003f2), propget] + HRESULT Type([out, retval] BSTR* pbstrType); + + [id(0x000004b0)] + HRESULT Delete([in, optional, defaultvalue(0)] VARIANT_BOOL Force); + + [id(0x000004b2)] + HRESULT Copy([in] BSTR Destination, [in, optional, defaultvalue(-1)] VARIANT_BOOL OverWriteFiles); + + [id(0x000004b4)] + HRESULT Move([in] BSTR Destination); + + [id(0x0000044c)] + HRESULT OpenAsTextStream([in, optional, defaultvalue(1)] IOMode IOMode, + [in, optional, defaultvalue(0)] Tristate Format, [out, retval] ITextStream** ppts); + } + + [ + odl, + uuid(53BAD8C1-E718-11CF-893D-00A0C9054228), + hidden, + dual, + nonextensible, + oleautomation + ] + interface ITextStream : IDispatch + { + [id(0x00002710), propget] + HRESULT Line([out, retval] long* Line); + + [id(0xfffffdef), propget] + HRESULT Column([out, retval] long* Column); + + [id(0x00002712), propget] + HRESULT AtEndOfStream([out, retval] VARIANT_BOOL* EOS); + + [id(0x00002713), propget] + HRESULT AtEndOfLine([out, retval] VARIANT_BOOL* EOL); + + HRESULT Read([in] long Characters, [out, retval] BSTR* Text); + + [id(0x00002715)] + HRESULT ReadLine([out, retval] BSTR* Text); + + [id(0x00002716)] + HRESULT ReadAll([out, retval] BSTR* Text); + + [id(0x00002717)] + HRESULT Write([in] BSTR Text); + + [id(0x00002718)] + HRESULT WriteLine([in, optional, defaultvalue("")] BSTR Text); + + [id(0x00002719)] + HRESULT WriteBlankLines([in] long Lines); + + [id(0x0000271a)] + HRESULT Skip([in] long Characters); + + [id(0x0000271b)] + HRESULT SkipLine(); + + [id(0x0000271c)] + HRESULT Close(); + } + + [ + odl, + uuid(2A0B9D10-4B87-11D3-A97A-00104B365C9F), + dual, + nonextensible, + oleautomation + ] + interface IFileSystem3 : IFileSystem + { + [id(0x00004e20)] + HRESULT GetStandardStream([in] StandardStreamTypes StandardStreamType, + [in, optional, defaultvalue(0)] VARIANT_BOOL Unicode, [out, retval] ITextStream** ppts); + + [id(0x00004e2a)] + HRESULT GetFileVersion([in] BSTR FileName, [out, retval] BSTR* FileVersion); + } + + [ + odl, + uuid(AADC65F6-CFF1-11D1-B747-00C04FC2B085), + dual, + oleautomation + ] + interface IScriptEncoder : IDispatch + { + [id(00000000)] + HRESULT EncodeScriptFile([in] BSTR szExt, [in] BSTR bstrStreamIn, [in] long cFlags, + [in] BSTR bstrDefaultLang, [out, retval] BSTR* pbstrStreamOut); + } + + [ + uuid(EE09B103-97E0-11CF-978F-00A02463E06F), + version(1.0), + helpstring("Scripting.Dictionary"), + threading(apartment), + progid("Scripting.Dictionary") + ] + coclass Dictionary + { + [default] interface IDictionary; + } + + [ + uuid(0D43FE01-F093-11CF-8940-00A0C9054228), + version(1.0), + helpstring("FileSystem Object"), + threading(both), + progid("Scripting.FileSystemObject") + ] + coclass FileSystemObject + { + [default] interface IFileSystem3; + } + + [ + uuid(C7C3F5B1-88A3-11D0-ABCB-00A0C90FFFC0), + noncreatable, + version(1.0) + ] + coclass Drive + { + [default] interface IDrive; + } + + [ + uuid(C7C3F5B2-88A3-11D0-ABCB-00A0C90FFFC0), + noncreatable, + version(1.0) + ] + coclass Drives + { + [default] interface IDriveCollection; + } + + [ + uuid(C7C3F5B3-88A3-11D0-ABCB-00A0C90FFFC0), + noncreatable, + version(1.0) + ] + coclass Folder + { + [default] interface IFolder; + } + + [ + uuid(C7C3F5B4-88A3-11D0-ABCB-00A0C90FFFC0), + noncreatable, + version(1.0) + ] + coclass Folders + { + [default] interface IFolderCollection; + } + + [ + uuid(C7C3F5B5-88A3-11D0-ABCB-00A0C90FFFC0), + noncreatable, + version(1.0) + ] + coclass File + { + [default] interface IFile; + } + + [ + uuid(C7C3F5B6-88A3-11D0-ABCB-00A0C90FFFC0), + noncreatable, + version(1.0) + ] + coclass Files + { + [default] interface IFileCollection; + } + + [ + uuid(0BB02EC0-EF49-11CF-8940-00A0C9054228), + noncreatable, + version(1.0) + ] + coclass TextStream + { + [default] interface ITextStream; + } + + [ + uuid(32DA2B15-CFED-11D1-B747-00C04FC2B085), + version(1.0), + helpstring("Script Encoder Object"), + threading(apartment), + progid("Scripting.Encoder") + ] + coclass Encoder + { + [default] interface IScriptEncoder; + } +}