Подпись кода на драйверах WM6.1 - PullRequest
1 голос
/ 31 августа 2010

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

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

У меня проблема в том, что мой драйвер не был загружен при запуске на WM6.1. Это драйвер для GPS, поэтому его необходимо загрузить, чтобы он был доступен для любого программного обеспечения GPS, доступного через COM-порт. Я полагаю, что это связано с проблемой подписи, учитывая, что метод DllMain никогда не вызывается.

Мне выдан привилегированный сертификат (.pfx), и для записи я также получил новый (январь 2010 г.) сертификат SDKSamplePrivDeveloper. Я предполагаю, что для драйверов необходим привилегированный сертификат.

Так что же я на самом деле сделал? Я пробовал хотя бы несколько вариантов этого за последние 4-5 дней, но все безуспешно.

В визуальной студии; 1) Проект DLL имеет подпись authenticode, установленную для нашего сертификата .pfx. Постройте проект.

2) Проект CABWizard имеет аутентичный код, установленный на тот же сертификат. Постройте проект.

3) Следуя инструкциям MSDN ... Преобразовал .pfx в сертификат 509 Base64 и создал из него файл обеспечения XML. Он был создан в своем собственном файле CAB или CPF. А также попытался подготовить файл _setup.xml в ранее созданном CAB-файле, чтобы он был установлен вместе с приложением.

4) Я установил их на устройство, и хотя драйвер работает в нашем тестовом приложении, он не загружается при загрузке, даже если его настройки реестра в «BuiltIn» верны. При проверке хранилищ сертификатов в реестре я вижу сертификат, добавленный в хранилища SPC, Root, Privileged и Unprivileged. А при использовании System | Certificates я вижу сертификат на вкладке Root. Так что они определенно были добавлены.

Учитывая вышесказанное не сработало. Я также попробовал инструмент siggner.exe из http://www.modaco.com/content/i8000-verizon-sch-i920-omnia-ii-http-i8000-modaco-com/306870/sdkcerts-2010-and-signing-tool/ с сертификатом SDKSamplePrivDeveloper.

1) Для проекта Dll для подписи authenticode установлено значение No. Построить проект.

2) Загрузите siggner.exe и подпишите файл Dll с помощью SDKSamplePrivDeveloper.cer.

3) Для проекта CABWizard для authenticode установлено значение No. Построить проект.

4) Загрузите siggner.exe и подпишите файл cab с помощью SDKSamplePrivDeveloper.cer.

5) Используйте NewSDKCerts.Cab для установки сертификата SDKSamplePrivDeveloper в магазины.

6) Установите созданный мной CAB-файл вместе с драйвером.

7) Опять же, при горячей перезагрузке драйвер не загружается при загрузке в device.exe.

Учитывая вышесказанное, кто-нибудь может дать мне несколько четких инструкций о верном способе загрузки драйвера при запуске. Я явно делаю что-то не так с подписью, учитывая, что она загружается без проблем в Windows CE5. Я знаю, что код драйвера устройства в порядке, так как я могу активировать его вручную в коде с помощью метода ActiviateDevice () в WM6.1.

Edit -

Возможно, стоит добавить, я также создал DLL и CAB без подписи. И на чистой загрузке ОС она установлена ​​без нареканий. Пока я не загружался при загрузке, я ожидал, что предупреждения о CAB и DLL не будут подписаны.

Ответы [ 2 ]

0 голосов
/ 10 января 2011

Подпись драйвера также была проблемой, связанной с этим драйвером.Теперь у нас есть сертификат от производителя для подписи драйверов, так что проблема также была решена.

0 голосов
/ 22 ноября 2010

Причиной сбоя драйвера не была проблема с сертификатом.

Драйвер изначально был автономным, а также содержал некоторый код GUI и с тех пор расширился. Библиотека, используемая для создания полноэкранного приложения, не была доступна при запуске, поэтому она молча завершилась с проблемой зависимости.

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

...