|  | /* | 
|  | *    Gameux library private header | 
|  | * | 
|  | * 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 | 
|  | */ | 
|  |  | 
|  | extern HRESULT GameExplorer_create(IUnknown* pUnkOuter, IUnknown **ppObj) DECLSPEC_HIDDEN; | 
|  | extern HRESULT GameStatistics_create(IUnknown* pUnkOuter, IUnknown **ppObj) DECLSPEC_HIDDEN; | 
|  |  | 
|  | /******************************************************************************* | 
|  | * Helper functions and structures | 
|  | * | 
|  | * These are helper function and structures, which  are used widely in gameux | 
|  | * implementation. Details about usage and place of implementation is | 
|  | * in description of each function/structure. | 
|  | */ | 
|  |  | 
|  | /******************************************************************************* | 
|  | * struct GAMEUX_GAME_DATA | 
|  | * | 
|  | * Structure which contains data about single game. It is used to transfer | 
|  | * data inside of gameux module in various places. | 
|  | */ | 
|  | struct GAMEUX_GAME_DATA | 
|  | { | 
|  | LPWSTR sGDFBinaryPath;          /* path to binary containing GDF */ | 
|  | LPWSTR sGameInstallDirectory;   /* directory passed to AddGame/InstallGame methods */ | 
|  | GAME_INSTALL_SCOPE installScope;/* game's installation scope */ | 
|  | GUID guidInstanceId;            /* game installation instance identifier */ | 
|  | GUID guidApplicationId;         /* game's application identifier */ | 
|  | BSTR bstrName;                  /* game's title */ | 
|  | BSTR bstrDescription;           /* game's description */ | 
|  | }; | 
|  | /******************************************************************************* | 
|  | * GAMEUX_FindGameInstanceId | 
|  | * | 
|  | * Helper function. Searches for instance identifier of given game in given | 
|  | * installation scope. Implemented in gameexplorer.c | 
|  | * | 
|  | * Parameters: | 
|  | *  sGDFBinaryPath                          [I]     path to binary containing GDF | 
|  | *  installScope                            [I]     game install scope to search in | 
|  | *  pInstanceId                             [O]     instance identifier of given game | 
|  | * | 
|  | * Returns: | 
|  | *  S_OK                    id was returned properly | 
|  | *  S_FALSE                 id was not found in the registry | 
|  | *  E_OUTOFMEMORY           problem while memory allocation | 
|  | */ | 
|  | HRESULT GAMEUX_FindGameInstanceId( | 
|  | LPCWSTR sGDFBinaryPath, | 
|  | GAME_INSTALL_SCOPE installScope, | 
|  | GUID* pInstanceId) DECLSPEC_HIDDEN; | 
|  | /******************************************************************************* | 
|  | * GAMEUX_buildGameRegistryPath | 
|  | * | 
|  | * Helper function, builds registry path to key, where game's data are stored. | 
|  | * Implemented in gameexplorer.c | 
|  | * | 
|  | * Parameters: | 
|  | *  installScope                [I]     the scope which was used in AddGame/InstallGame call | 
|  | *  gameInstanceId              [I]     game instance GUID. If NULL, then only | 
|  | *                                      path to scope will be returned | 
|  | *  lpRegistryPath              [O]     pointer which will receive address to string | 
|  | *                                      containing expected registry path. Path | 
|  | *                                      is relative to HKLM registry key. It | 
|  | *                                      must be freed by calling HeapFree(GetProcessHeap(), 0, ...) | 
|  | * | 
|  | * Name of game's registry key always follows patterns below: | 
|  | *  When game is installed for current user only (installScope is GIS_CURRENT_USER): | 
|  | *      HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ | 
|  | *          GameUX\[user's security ID]\[game instance ID] | 
|  | * | 
|  | *  When game is installed for all users (installScope is GIS_ALL_USERS): | 
|  | *      HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ | 
|  | *          GameUX\Games\[game instance ID] | 
|  | * | 
|  | * | 
|  | */ | 
|  | HRESULT GAMEUX_buildGameRegistryPath(GAME_INSTALL_SCOPE installScope, | 
|  | LPCGUID gameInstanceId, | 
|  | LPWSTR* lpRegistryPath) DECLSPEC_HIDDEN; |