1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering /*
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering * Defines the COM interfaces of Game Explorer
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering *
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering * Copyright (C) 2008 Alistair Leslie-Hughes
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering * Copyright (C) 2010 Mariusz PluciƄski
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering *
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering * This library is free software; you can redistribute it and/or
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering * modify it under the terms of the GNU Lesser General Public
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering * License as published by the Free Software Foundation; either
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering * version 2.1 of the License, or (at your option) any later version.
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering *
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering * This library is distributed in the hope that it will be useful,
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering * but WITHOUT ANY WARRANTY; without even the implied warranty of
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering * Lesser General Public License for more details.
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering *
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering * You should have received a copy of the GNU Lesser General Public
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering * License along with this library; if not, write to the Free Software
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering */
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering
8bdbb8d9cbe1d35708385573d70984ab4533812dLennart Poettering/*
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering * a choice of LGPL license versions is made available with the language indicating
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering * that LGPLv2 or any later version may be used, or where a choice of which version
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering * of the LGPL is applied is otherwise unspecified.
04d39279245834494baccfdb9349db8bf80abd13Lennart Poettering */
878cd7e95ca303f9851d227a22d2022bd49944b0Lennart Poettering
878cd7e95ca303f9851d227a22d2022bd49944b0Lennart Poetteringimport "oaidl.idl";
f48e75cb9a8112d35855c44a156934f2ee0edb2eLennart Poetteringimport "ocidl.idl";
785890acf6d629ff881a1f065f431df1b7fc8c7aLennart Poetteringimport "shobjidl.idl";
f2cbe59e113f08549949a76ac5b9b3972df4cc30Lennart Poettering
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering#ifndef __WIDL__
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen#define threading(model)
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering#define progid(str)
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering#define vi_progid(str)
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering#endif
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen[
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen uuid(4F48A59C-942D-4F3C-83C9-4EFFE84E4959),
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering version(1.0),
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering helpstring("gameux public 1.0 Type Library")
aa1936ea1a89c2bb968ba33e3274898a4eeae771Lennart Poettering]
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poetteringlibrary gameuxLib
9d12709626bccc0cae677a7035f62efe6aabb4abLennart Poettering{
04d39279245834494baccfdb9349db8bf80abd13Lennart Poettering importlib("stdole2.tlb");
023fb90b83871a15ef7f57e8cd126e3426f99b9eLennart Poettering
785890acf6d629ff881a1f065f431df1b7fc8c7aLennart Poettering cpp_quote("#define ID_GDF_XML __GDF_XML")
785890acf6d629ff881a1f065f431df1b7fc8c7aLennart Poettering cpp_quote("#define ID_GDF_THUMBNAIL __GDF_THUMBNAIL")
f2cbe59e113f08549949a76ac5b9b3972df4cc30Lennart Poettering cpp_quote("#define ID_ICON_ICO __ICON_ICO")
56159e0d918e9a9be07988133bb2847779325de0Lennart Poettering
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering cpp_quote("#if defined(__GNUC__)")
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering cpp_quote("#define ID_GDF_XML_STR (const WCHAR[]){'_','_','G','D','F','_','X','M','L',0}")
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering cpp_quote("#define ID_GDF_THUMBNAIL_STR (const WCHAR[]){'_','_','G','D','F','_','T','H','U','M','B','N','A','I','L',0}")
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering cpp_quote("#elif defined(_MSC_VER)")
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering cpp_quote("#define ID_GDF_XML_STR L\"__GDF_XML\"")
e56056e93d33619a3acf13e483900b4f8938228fThomas Hindoe Paaboel Andersen cpp_quote("#define ID_GDF_THUMBNAIL_STR L\"__GDF_THUMBNAIL\"")
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering cpp_quote("#endif")
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering
d21ed1ead18d16d35c30299a69d3366847f8a039Lennart Poettering typedef enum
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering {
785890acf6d629ff881a1f065f431df1b7fc8c7aLennart Poettering GIS_NOT_INSTALLED = 1,
785890acf6d629ff881a1f065f431df1b7fc8c7aLennart Poettering GIS_CURRENT_USER = 2,
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering GIS_ALL_USERS = 3
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering } GAME_INSTALL_SCOPE;
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering typedef enum
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering {
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering GAMESTATS_OPEN_OPENORCREATE = 0,
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering GAMESTATS_OPEN_OPENONLY = 1
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering } GAMESTATS_OPEN_TYPE;
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering typedef enum
56159e0d918e9a9be07988133bb2847779325de0Lennart Poettering {
56159e0d918e9a9be07988133bb2847779325de0Lennart Poettering GAMESTATS_OPEN_CREATED = 0,
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen GAMESTATS_OPEN_OPENED = 1
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen } GAMESTATS_OPEN_RESULT;
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen
56159e0d918e9a9be07988133bb2847779325de0Lennart Poettering [
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering object,
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering uuid(E7B2FB72-D728-49B3-A5F2-18EBF5F1349E)
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering ]
56159e0d918e9a9be07988133bb2847779325de0Lennart Poettering interface IGameExplorer : IUnknown
56159e0d918e9a9be07988133bb2847779325de0Lennart Poettering {
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering HRESULT AddGame([in] BSTR sGDFBinaryPath,
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering [in] BSTR sInstallDirectory,
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen [in] GAME_INSTALL_SCOPE installScope,
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen [in, out] GUID* pguidInstanceID);
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen HRESULT RemoveGame([in] GUID instanceID);
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen HRESULT UpdateGame([in] GUID instanceID);
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen HRESULT VerifyAccess([in] BSTR sGDFBinaryPath,
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen [out] BOOL* pHasAccess);
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen };
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering [
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering object,
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering uuid(3887C9CA-04A0-42ae-BC4C-5FA6C7721145)
e56056e93d33619a3acf13e483900b4f8938228fThomas Hindoe Paaboel Andersen ]
e56056e93d33619a3acf13e483900b4f8938228fThomas Hindoe Paaboel Andersen interface IGameStatistics : IUnknown
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering {
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen HRESULT GetMaxCategoryLength(
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen [retval, out] UINT* cch);
5b30bef856e89a571df57b7b953e9a1409d9acedLennart Poettering
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering HRESULT GetMaxNameLength(
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen [retval, out] UINT* cch);
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering HRESULT GetMaxValueLength(
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering [retval, out] UINT* cch);
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen HRESULT GetMaxCategories(
5b30bef856e89a571df57b7b953e9a1409d9acedLennart Poettering [retval, out] WORD* pMax);
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen HRESULT GetMaxStatsPerCategory(
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen [retval, out] WORD* pMax);
5b30bef856e89a571df57b7b953e9a1409d9acedLennart Poettering
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering HRESULT SetCategoryTitle(
e56056e93d33619a3acf13e483900b4f8938228fThomas Hindoe Paaboel Andersen [in] WORD categoryIndex,
e56056e93d33619a3acf13e483900b4f8938228fThomas Hindoe Paaboel Andersen [string, in] LPCWSTR title);
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering HRESULT GetCategoryTitle(
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering [in] WORD categoryIndex,
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering [retval, string, out] LPWSTR* pTitle);
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering HRESULT GetStatistic(
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [in] WORD categoryIndex,
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [in] WORD statIndex,
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [string, unique, out, in] LPWSTR* pName,
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [string, unique, out, in] LPWSTR* pValue);
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering HRESULT SetStatistic(
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [in] WORD categoryIndex,
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [in] WORD statIndex,
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [string, in] LPCWSTR name,
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [string, in] LPCWSTR value);
56159e0d918e9a9be07988133bb2847779325de0Lennart Poettering
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering HRESULT Save(
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [in] BOOL trackChanges);
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering HRESULT SetLastPlayedCategory(
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [in] UINT categoryIndex);
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering HRESULT GetLastPlayedCategory(
56159e0d918e9a9be07988133bb2847779325de0Lennart Poettering [retval, out] UINT* pCategoryIndex);
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering };
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [
56159e0d918e9a9be07988133bb2847779325de0Lennart Poettering object,
56159e0d918e9a9be07988133bb2847779325de0Lennart Poettering uuid(AFF3EA11-E70E-407d-95DD-35E612C41CE2)
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering ]
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering interface IGameStatisticsMgr : IUnknown
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering {
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering HRESULT GetGameStatistics(
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [string, in] LPCWSTR GDFBinaryPath,
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [in] GAMESTATS_OPEN_TYPE openType,
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [out] GAMESTATS_OPEN_RESULT* pOpenResult,
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [retval, out] IGameStatistics** ppiStats);
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering HRESULT RemoveGameStatistics(
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [string, in] LPCWSTR GDFBinaryPath);
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering };
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering object,
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering uuid(86874AA7-A1ED-450d-A7EB-B89E20B2FFF3)
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering ]
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering interface IGameExplorer2 : IUnknown
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering {
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering HRESULT InstallGame(
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [string, in] LPCWSTR binaryGDFPath,
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [unique, in] LPCWSTR installDirectory,
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [in] GAME_INSTALL_SCOPE installScope);
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering HRESULT UninstallGame(
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [string, in] LPCWSTR binaryGDFPath);
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering HRESULT CheckAccess(
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [string, in] LPCWSTR binaryGDFPath,
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [retval, out] BOOL* pHasAccess);
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering }
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering helpstring("GameExplorer Class"),
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering threading(both),
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering progid("gameux.GameExplorer.1"),
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering vi_progid("gameux.GameExplorer"),
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering uuid(9A5EA990-3034-4D6F-9128-01F3C61022BC)
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering ]
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering coclass GameExplorer
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering {
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [default] interface IGameExplorer;
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering };
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering helpstring("GameStatistics Class"),
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering threading(apartment),
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering progid("gameux.GameStatistics.1"),
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering vi_progid("gameux.GameStatistics"),
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering uuid(DBC85A2C-C0DC-4961-B6E2-D28B62C11AD4)
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering ]
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering coclass GameStatistics
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering {
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering [default] interface IGameStatistics;
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering };
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering}
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering