ну так нельзя локально посчитать, потом записать в глобальную переменную )))
почему? у нас идёт перечисление устройств, считаются геймпады, заносятся в глобал. Да можно вынести Init в отдельную функцию, можно динамически считать gamepadCount, но я не вижу в этом необходимости
что используется локально - использовать локально, что нужно глобально - выносить глобально (но не использовать это для локальной логики), плюс вынести из dllmain функции енамерации геймпадов и оставить там только код инициализации самой библиотеки )
Наверное надо сделать отдельную функцию для энумерации, чтобы не делать это в функции чтения состояния геймпада, чтобы не перегружать, но это уже в конце буду думать, смотреть, мерить нагрузку как лучше сделать