-
Notifications
You must be signed in to change notification settings - Fork 0
Parental Controls
On startup, FUEL will check that parental controls are properly set to allow the game to run. If not then a message is shown and the game exits immediately. It does this check by using CoCreateInstance
to obtain an IGameExplorer, an interface for Windows Games Explorer. It then calls VerifyAccess
using the command-line string that ran the game to get the executable name with the emebedded GDF resource, more information about VerifyAccess
can be found in Adding a Game to Games Explorer. If any of the function calls fail or the parental controls are not set up to allow access then the check fails, a message is shown, and the game closes.
The text in this window is retrieved from the embedded error messages.
The __GDF_THUMBNAIL
resource is the same icon as the executable.
The __GDF_XML
resource follows
<?xml version="1.0" encoding="utf-16"?>
<GameDefinitionFile xmlns:baseTypes="urn:schemas-microsoft-com:GamesExplorerBaseTypes.v1" xmlns="urn:schemas-microsoft-com:GameDescription.v1">
<GameDefinition gameID="{7A30902A-A193-4CF9-B4B3-593F95C5E877}">
<Name>FUEL™</Name>
<Description>Welcome in a new world!</Description>
<ReleaseDate>2009-05-28</ReleaseDate>
<Genres>
<Genre>Sports/Racing</Genre>
</Genres>
<Ratings>
<Rating ratingSystemID="{768BD93D-63BE-46A9-8994-0B53C4B5248F}" ratingID="{7A53B0BE-B92D-4e8a-A11F-8E6F9F3C575B}" />
<Rating ratingSystemID="{36798944-B235-48ac-BF21-E25671F597EE}" ratingID="{97D9239C-2BA3-4e1d-A710-B626DC4602A6}" />
<Rating ratingSystemID="{C705DCF4-6AFE-4f4f-BC51-21807E4E5CFB}" ratingID="{6948F4DF-FD98-41ea-979A-8364043D7FD6}" />
<Rating ratingSystemID="{EC290BBB-D618-4cb9-9963-1CAAE515443E}" ratingID="{5098B1DF-486F-4e79-A6D6-6E0879A63811}" />
<Rating ratingSystemID="{9AAFBACD-EAB9-4946-8BE8-C4D997927C81}" ratingID="{F7066480-67CC-4697-9B47-7E534B74089D}" />
<Rating ratingSystemID="{7F2A4D3A-23A8-4123-90E7-D986BF1D9718}" ratingID="{97D9239C-2BA3-4e1d-A710-B626DC4602A6}" />
</Ratings>
<Version>
<VersionNumber versionNumber="1.0.0.0" />
</Version>
<SavedGames baseKnownFolderID="{fdd39ad0-238f-46af-adb4-6c85480369c7}" path="My Games\FUEL" />
<WindowsSystemPerformanceRating minimum="3.0" recommended="5.0" />
<Developers>
<Developer URI="http://www.asobostudio.com">Asobo Studio</Developer>
</Developers>
<Publishers>
<Publisher URI="http://www.codemasters.com">Codemasters</Publisher>
</Publishers>
<GameExecutables>
<GameExecutable path="Fuel.exe" />
<GameExecutable path="GameSetup.exe" />
<GameExecutable path="SecuLauncher.exe" />
</GameExecutables>
</GameDefinition>
</GameDefinitionFile>
A cleaned-up pseudo-code for this procedure follows
bool VerifyAccess() {
IGameExplorer *pIGameExplorer = NULL;
if (CoCreateInstance(CLSID_GameExplorer, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pIGameExplorer)) < 0 || !pIGameExplorer)
return true;
bool pfHasAccess = false;
OLECHAR *bstrGDFBinaryPath = SysAllocString(/* command-line */);
HRESULT result = pIGameExplorer->VerifyAccess(bstrGDFBinaryPath, &pfHasAccess);
pIGameExplorer->Release();
if (result < 0 || pfHasAccess)
return true;
MessageBoxW(/* parental controls error message */)
return false
}
Class Name | UUID | Header File |
---|---|---|
GameExplorer |
{9A5EA990-3034-4D6F-9128-01F3C61022BC} |
gameux.h |
IGameExplorer |
{E7B2FB72-D728-49B3-A5F2-18EBF5F1349E} |
gameux.h |
The command-line is generated during startup using GetCommandLineA
and _splitpath
to get the executable name, it ends up looking like "\"FUEL.exe\""
. The title of the error message box is index 15
in the Embedded Error Messages and the body is index 14
. In English this would be "Parental Control" and "This game is restricted according to parental control." respectively.
For FMTK Users and Mod Developers
For FMTK Developers
Asobo BigFile Format Specification
Asobo Classes
Animation_Z
Binary_Z
Bitmap_Z
Camera_Z
CollisionVol_Z
Fonts_Z
GameObj_Z
GenWorld_Z
GwRoad_Z
Keyframer*_Z
Light_Z
LightData_Z
Lod_Z
LodData_Z
Material_Z
MaterialAnim_Z
MaterialObj_Z
Mesh_Z
MeshData_Z
Node_Z
Omni_Z
Particles_Z
ParticlesData_Z
RotShape_Z
RotShapeData_Z
Rtc_Z
Skel_Z
Skin_Z
Sound_Z
Spline_Z
SplineGraph_Z
Surface_Z
SurfaceDatas_Z
UserDefine_Z
Warp_Z
World_Z
WorldRef_Z
Asobo File Format Idioms
Asobo CRC32
Asobo LZ Compression
Asobo Arithmetic Coding Compression
Asobo Save Game File Format Specification
Asobo Audio Formats
TotemTech/ToonTech/Zouna/ACE/BSSTech/Opal Timeline
Zouna Modding Resources
Miscellaneous