/* * Defines the COM interfaces of Game Explorer * * Copyright (C) 2008 Alistair Leslie-Hughes * Copyright (C) 2010 Mariusz PluciĆski * * 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 "oaidl.idl"; import "ocidl.idl"; import "shobjidl.idl"; #ifndef __WIDL__ #define threading(model) #define progid(str) #define vi_progid(str) #endif [ uuid(4F48A59C-942D-4F3C-83C9-4EFFE84E4959), version(1.0), helpstring("gameux public 1.0 Type Library") ] library gameuxLib { importlib("stdole2.tlb"); cpp_quote("#define ID_GDF_XML __GDF_XML") cpp_quote("#define ID_GDF_THUMBNAIL __GDF_THUMBNAIL") cpp_quote("#define ID_ICON_ICO __ICON_ICO") cpp_quote("#if defined(__GNUC__)") cpp_quote("#define ID_GDF_XML_STR (const WCHAR[]){'_','_','G','D','F','_','X','M','L',0}") cpp_quote("#define ID_GDF_THUMBNAIL_STR (const WCHAR[]){'_','_','G','D','F','_','T','H','U','M','B','N','A','I','L',0}") cpp_quote("#elif defined(_MSC_VER)") cpp_quote("#define ID_GDF_XML_STR L\"__GDF_XML\"") cpp_quote("#define ID_GDF_THUMBNAIL_STR L\"__GDF_THUMBNAIL\"") cpp_quote("#endif") typedef enum { GIS_NOT_INSTALLED = 1, GIS_CURRENT_USER = 2, GIS_ALL_USERS = 3 } GAME_INSTALL_SCOPE; typedef enum { GAMESTATS_OPEN_OPENORCREATE = 0, GAMESTATS_OPEN_OPENONLY = 1 } GAMESTATS_OPEN_TYPE; typedef enum { GAMESTATS_OPEN_CREATED = 0, GAMESTATS_OPEN_OPENED = 1 } GAMESTATS_OPEN_RESULT; [ object, uuid(E7B2FB72-D728-49B3-A5F2-18EBF5F1349E) ] interface IGameExplorer : IUnknown { HRESULT AddGame([in] BSTR sGDFBinaryPath, [in] BSTR sInstallDirectory, [in] GAME_INSTALL_SCOPE installScope, [in, out] GUID* pguidInstanceID); HRESULT RemoveGame([in] GUID instanceID); HRESULT UpdateGame([in] GUID instanceID); HRESULT VerifyAccess([in] BSTR sGDFBinaryPath, [out] BOOL* pHasAccess); }; [ object, uuid(3887C9CA-04A0-42ae-BC4C-5FA6C7721145) ] interface IGameStatistics : IUnknown { HRESULT GetMaxCategoryLength( [retval, out] UINT* cch); HRESULT GetMaxNameLength( [retval, out] UINT* cch); HRESULT GetMaxValueLength( [retval, out] UINT* cch); HRESULT GetMaxCategories( [retval, out] WORD* pMax); HRESULT GetMaxStatsPerCategory( [retval, out] WORD* pMax); HRESULT SetCategoryTitle( [in] WORD categoryIndex, [string, in] LPCWSTR title); HRESULT GetCategoryTitle( [in] WORD categoryIndex, [retval, string, out] LPWSTR* pTitle); HRESULT GetStatistic( [in] WORD categoryIndex, [in] WORD statIndex, [string, unique, out, in] LPWSTR* pName, [string, unique, out, in] LPWSTR* pValue); HRESULT SetStatistic( [in] WORD categoryIndex, [in] WORD statIndex, [string, in] LPCWSTR name, [string, in] LPCWSTR value); HRESULT Save( [in] BOOL trackChanges); HRESULT SetLastPlayedCategory( [in] UINT categoryIndex); HRESULT GetLastPlayedCategory( [retval, out] UINT* pCategoryIndex); }; [ object, uuid(AFF3EA11-E70E-407d-95DD-35E612C41CE2) ] interface IGameStatisticsMgr : IUnknown { HRESULT GetGameStatistics( [string, in] LPCWSTR GDFBinaryPath, [in] GAMESTATS_OPEN_TYPE openType, [out] GAMESTATS_OPEN_RESULT* pOpenResult, [retval, out] IGameStatistics** ppiStats); HRESULT RemoveGameStatistics( [string, in] LPCWSTR GDFBinaryPath); }; [ object, uuid(86874AA7-A1ED-450d-A7EB-B89E20B2FFF3) ] interface IGameExplorer2 : IUnknown { HRESULT InstallGame( [string, in] LPCWSTR binaryGDFPath, [unique, in] LPCWSTR installDirectory, [in] GAME_INSTALL_SCOPE installScope); HRESULT UninstallGame( [string, in] LPCWSTR binaryGDFPath); HRESULT CheckAccess( [string, in] LPCWSTR binaryGDFPath, [retval, out] BOOL* pHasAccess); } [ helpstring("GameExplorer Class"), threading(both), progid("gameux.GameExplorer.1"), vi_progid("gameux.GameExplorer"), uuid(9A5EA990-3034-4D6F-9128-01F3C61022BC) ] coclass GameExplorer { [default] interface IGameExplorer; }; [ helpstring("GameStatistics Class"), threading(apartment), progid("gameux.GameStatistics.1"), vi_progid("gameux.GameStatistics"), uuid(DBC85A2C-C0DC-4961-B6E2-D28B62C11AD4) ] coclass GameStatistics { [default] interface IGameStatistics; }; }