Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

03.09.2008, 19:14

IGameExplorer DirectX Interface

Hallo,
ich möchte mein Spiel zum "Game Explorer" (gibts erst ab Windows Vista) hinzufügen.
Im DirectX SDK sind einige Beispiele. Ich habe in meine EXE Datei jetzt ein GameDefinitionFile einkompiliert und nun geht es darum, bei der Installation das Spiel hinzuzufügen.
Microsoft bietet hier das Interface IGameExplorer an.

Ich benutze es wie folgt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
// Nach CoInitialize(0)


hResult = CoCreateInstance(__uuidof(GameExplorer), NULL, CLSCTX_INPROC_SERVER, __uuidof(IGameExplorer), reinterpret_cast<void**>(&pGameExplorer));
if (FAILED(hResult))
    // Error Handling... Aber CoCreateInstance schlägt NICHT fehl; pGameExplorer wird ordentlich initialisiert (laut Rückgabewert..)


GUID NullGUID = GUID_NULL;
hResult = pGameExplorer->AddGame(bsGDFBinPath, bsGameInstallPath, InstallScope, &NullGUID);
if (FAILED(hResult))
    // Hier liefert AddGame failed. hResult ist -2147023082


Wie kann ich eine ordentliche Fehlermeldung aus dem hResult bekommen und wie kann man das Problem beheben?

MfG,
Max

2

03.09.2008, 19:36

Dem DirectX SDK liegt das Tool "DirectX Error Lookup" bei. Dort kannst du nachschauen.
Ansonsten siehe Doku:

Zitat von »"DX Doku"«


Return Values
This function returns an HRESULT. Use the SUCCEEDED and FAILED macros to test the return value of this function.

AddGame returns S_FALSE if the game was already installed on the system. This situation occurs if a game is added more than once with the same ApplicationID and GameInstallDirectory; that is, AddGame is called twice for the same game installed in the same folder.

3

03.09.2008, 21:54

DX Error Lookup gibt mir folgendes aus:

HRESULT: 0x80070716 (2147944214)
Name: ERROR_RESOURCE_NAME_NOT_FOUND
Description: n/a
Severity code: Failed
Facility Code: FACILITY_WIN32 (7)
Error Code: 0x0716 (1814)

Ich habe deshalb überprüft, ob alles mit der einkompilierten Ressource OK ist, aber ich habe dort keine Fehler gefunden...
Die Resourcen-ID (ID_GDF_XML) wird vom Ressourcen Compiler übrigens immer in Unicode angegeben. Ist das vl. der Grund? Ich wüsste aber keine Möglichkeit, rc.exe mitzuteilen, dass in ANSI gearbeitet werden soll...

4

24.09.2008, 16:57

So ich habe es jetzt selbst herausgefunden:
Die XML Datei darf in der Resource NICHT in Unicode vorliegen. Damit rc.exe das mitbekommt kann man folgendes anwenden:

Die rc-Datei muss so aussehen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <gameux.h>

LANGUAGE LANG_NEUTRAL, SUBLANG_DEFAULT
#pragma code_page(DEFAULT)

#ifdef UNICODE
#undef UNICODE
#endif

#ifdef _UNICODE
#undef _UNICODE
#endif

ID_GDF_XML   DATA   "GameDefinitionFile.gdf.xml"

Damit funktioniert es. :)

Werbeanzeige