IDirectInput8::EnumDevices und 64Bit?



  • Hallo allerseits,

    ich habe noch kein Problem, und das sollte auch so bleiben, desshalb mach ich mich jetzt vorher schlau.

    Die Methode IDirectInput8::EnumDevices ist ja wie folgt deklariert:

    HRESULT EnumDevices(
    DWORD dwDevType,
    LPDIENUMDEVICESCALLBACK lpCallback,
    LPVOID pvRef,
    DWORD dwFlags
    );

    Meine Frage wäre jetzt, ist "LPVOID pvRef" 64bit Safe, wenn ich da einen Pointer auf eine Funktorklasse z.B. übergebe. MS schreibt selber ja nicht, ob die DI8 Interfaces noch 64 bit kompatible gemacht werden und erklärt zumindest alle Interfaces älter als 9 zu deprecated, nur gibt es ja noch kein DI9 bzw. wirds ja auch nicht geben.

    Danke schonmal für eure Antworten,
    ich hoffe, dass das schon einer ausprobiert hat *g

    MfG Wally



  • Microsoft sagt, dass du aufpassen solltest. Some older DirectX APIs have been dropped for 64-bit native applications: DirectMusic, DirectPlay 4 and earlier, DirectDraw 6 and earlier, Direct3D 8 and earlier, and DirectInput 7 and earlier. Wenn von DirectInput 7 die Rede ist, so klingt das für mich, als ob DirectInput 8 64-bit ready wäre (ich weiss es nicht, ich habe nie DirectInput programmiert). Die Breite von LPVOID hängt ja soweit ich weiss von der Zielarchitektur ab; mit den richtigen Compilereinstellungen sollten massenhaft Warnungen kommen, falls es ein Problem gibt. Immerhin würde es sich hier um eine typische pointer truncation handeln.


Anmelden zum Antworten