Какова цель cbSize участника в структурах Win32API

У меня была похожая проблема, и эта публикация помогла мне решить мою проблему. Я забыл установить Сервисы Google Play.

Если вы используете его на своем эмуляторе, убедитесь, что у вас включены службы Google Play в

Tools -> Android -> SDK Manager -> SDK Tools -> Google play services

После установки перезагрузите Android Studio и ваш эмулятор

Мне пришлось понизить com.google.gms: google-services: с 4.1.0 до 4.0.0, и это сработало для меня. Этот пост здесь помог в этом

dependencies {
        classpath 'com.android.tools.build:gradle:3.3.0'
        classpath 'com.google.gms:google-services:4.0.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }

9
задан Jorge Ferreira 9 October 2008 в 23:48
поделиться

4 ответа

Мое исходное предположение - то, что это могло потенциально использоваться для управления версиями.

Это - одна причина. Я думаю, что это - более обычное.

Другой для структур, которые имеют данные переменной длины.

Я не думаю, что проверка корректную упаковку или ошибки в вызывающей стороне является конкретным обоснованием позади него, но это имело бы тот эффект.

11
ответ дан 4 December 2019 в 08:02
поделиться

Это используется для управления версиями. Хорошим примером является вызов GetVersionEx. Можно передать или в OSVERSIONINFO или в OSVERSIONINFOEX. OSVERSIONINFOEX является надмножеством OSVERSIONINFO, и единственный способ, которым знает ОС, в котором Вы передали, dwOSVersionInfoSize участником.

12
ответ дан 4 December 2019 в 08:02
поделиться

Частично управление версиями, главным образом безопасность..., чтобы препятствовать тому, чтобы вызванная функция ввела по абсолютному адресу в память, которая не была частью структуры, передало в.

1
ответ дан 4 December 2019 в 08:02
поделиться

Это также позволяет API WIN32 сделать минимальную сумму исправности, проверяющей данные, передаваемые в.

Например, общая ошибка состоит в том, чтобы структура WIN32 была передана в с неправильным или деинициализировала cbSize и когда это происходит, API WIN32 обычно просто возвращает неудавшийся результат, вместо того, чтобы попытаться обработать то, что, кажется, поврежденные данные.

3
ответ дан 4 December 2019 в 08:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: