Получить руководство по устройству (джойстику) с помощью мультимедиа Windows (winmm.dll) - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь реализовать взаимодействие с неуправляемым кодом и c #.

Я решил использовать для этого winmm.dll.

Есть необходимость получить уникальный гид джойстика и определить статус устройства(подключен или нет)

После некоторого расследования я считаю, что найдена функция, которая должна это делать ( joyGetDevCapsA ). Но не ясно, какое значение следует передать как int id параметр

public static class InputControllerInteroperator
    {
        private const string WINMM_NATIVE_LIBRARY = "winmm.dll";
        private const CallingConvention CALLING_CONVENTION = CallingConvention.StdCall;

        [DllImport(WINMM_NATIVE_LIBRARY, CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
        public static extern int joyGetPosEx(int uJoyID, ref JOYINFOEX pji);

        [DllImport(WINMM_NATIVE_LIBRARY, CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
        public static extern int joyGetPos(int uJoyID, ref JOYINFO pji);

        [DllImport(WINMM_NATIVE_LIBRARY, CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
        public static extern int joyGetNumDevs();

        [DllImport(WINMM_NATIVE_LIBRARY, CallingConvention = CALLING_CONVENTION, EntryPoint = "joyGetDevCaps"), SuppressUnmanagedCodeSecurity]
        public static extern int joyGetDevCapsA(int id, ref JOYCAPS lpCaps, int uSize);
    }

Не так много информации о Winmm API для C # продуманного интернета, поэтому, если у кого-то есть опыт, поделитесь им.

Q: Как можно обнаружить подключенный или не подключенный джойстик в текущий момент и получить уникальный идентификатор устройства?

...