1

スタック オーバーフローに関するこの問題については、すでに同様の質問をしていますが、問題のこの部分は新しい質問に分けることができると思います。

私は以前にモバイル開発を行ったことがないので、署名と証明書の使用は私にとって新しい概念であり、私が行ったすべてのトピックの読み取りについては、私が読んだ各 Web サイトはほんの一部しか説明していないため、知識が実際には向上しませんでした。完全なプロセスではなく、すべてをつなぎ合わせるのは困難でした。

私が抱えている問題は、WM6.1 の起動時にドライバーがロードされていないことです。GPS 用のドライバーなので、COM ポートでアクセス可能な任意の GPS ソフトウェアで使用できるようにロードする必要があります。DllMain メソッドが呼び出されないことを考えると、これは署名の問題によるものだと思います。

使用する特権証明書 (.pfx) が与えられており、記録として、新しい (2010 年 1 月) SDKSamplePrivDeveloper 証明書も取得しています。ドライバーには特権証明書が必要だと思います。

それで、私は実際に何をしましたか。過去 4 ~ 5 日間、少なくともいくつかのバリエーションを試しましたが、すべて成功しませんでした。

ビジュアルスタジオにて。1) DLL プロジェクトには、Authenticode 署名が .pfx 証明書に設定されています。プロジェクトをビルドします。

2) CABWizard プロジェクトには、同じ証明書に設定された認証コードがあります。プロジェクトをビルドします。

3) MSDN の指示に従います... .pfx を 509 Base64 証明書に変換し、そこから XML プロビジョニング ファイルを作成しました.独自の CAB または CPF ファイルに作成されました。また、_setup.xml ファイルを以前に作成した CAB ファイルにプロビジョニングして、アプリケーションと共にインストールしようとしました。

4) これらをデバイスにインストールしましたが、ドライバーはテスト アプリで動作しますが、"BuiltIn" のレジストリ設定が正しいにもかかわらず、起動時に読み込まれません。レジストリの証明書ストアを確認すると、証明書が SPC、ルート、特権、および非特権ストアに追加されていることがわかります。System|Certificates を使用すると、[ルート] タブに証明書が表示されます。したがって、それらは間違いなく追加されています。

上記を考えると、うまくいきませんでした。http://www.modaco.com/content/i8000-verizon-sch-i920-omnia-ii-http-i8000-modaco-com/306870/sdkcerts-2010-and-の siggner.exe ツールも試しました。 SDKSamplePrivDeveloper 証明書を使用するsigning-tool/ 。

1) Dll プロジェクトの認証コード署名が [いいえ] に設定されています。プロジェクトをビルドします。

2) siggner.exe をロードし、SDKSamplePrivDeveloper.cer で Dll ファイルに署名します。

3) CABWizard プロジェクトの認証コードは [いいえ] に設定されています。プロジェクトをビルドします。

4) siggner.exe をロードし、SDKSamplePrivDeveloper.cer で cab ファイルに署名します。

5) NewSDKCerts.Cab を使用して、SDKSamplePrivDeveloper 証明書をストアにインストールします。

6) ドライバで作成した CAB ファイルをインストールします。

7) ここでも、ウォーム リブートでは、ドライバーは起動時に device.exe に読み込まれません。

上記を踏まえて、起動時にドライバーをロードする確実な方法について、明確な指示を誰かに教えてもらえますか。これが Windows CE5 で問題なく起動することを考えると、明らかに署名に何か問題があります。WM6.1のActiviateDevice()メソッドを使用してコードで手動でアクティブ化できるため、デバイスドライバーコードが問題ないことはわかっています。

編集 -

追加する価値があるかもしれませんが、署名なしで DLL と CAB も作成しました。そして、OSのクリーンブートで、文句を言わずにインストールしました。起動時にまだ読み込まれていませんが、CAB と DLL が署名されていないという警告が表示されることを期待していました。

4

2 に答える 2

0

ドライバーの失敗の理由は、証明書の問題ではありませんでした。

ドライバーはもともと自己完結型で、いくつかの GUI コードも含まれていましたが、その後拡張されました。アプリケーションを全画面表示にするために使用されるライブラリは、起動時に利用できなかったため、依存関係の問題でサイレントに失敗しました。

これは現在、ライブラリが利用可能になった時点で起動アプリケーションをロードしてドライバーをウェイクアップすることで解決されています。追加する適切な解決策は、依存関係の失敗を防ぐために、必要なライブラリの読み込みを遅らせることです。

于 2010-11-22T13:42:40.283 に答える
0

ドライバーの署名は、このドライバーに関連する問題でもありました。ドライバーに署名するための製造元からの証明書が得られたため、問題も解決されました。

于 2011-01-10T16:16:08.653 に答える