Palm Programmer's Laboratory

トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

C/C++ Sync Suite Companion601/A

← 9 章に戻る ↑トップへ

A クイック スタート: コンジットをビルドするための Visual C++ .NET の使用

訳者: CDK 6.0.1 は、VC++ .NET 2002 と VC++ .NET 2003 用のコンジット作成ウィザードを提供しているのですが、これらを VC++ .NET 2005 (Express Edition) で利用する方法がわかりません。利用する方法をご存知の方、利用できないということをご存知の方は是非教えてください。

このクイック スタート ガイドは、あなたが Visual C++ .NET のコンジット ウィザードで生成されるサンプル コンジットを作成し、デバッグを開始するプロセスをステップを追って説明します。あなたが作成するコンジットは、ハンドヘルド上のメモ帳移植版 [1] データベースとデスクトップ上の XML ファイルとの同期をとります。メモ帳移植版 [1] アプリケーションは、スキーマ データベースではなく拡張データベースを使用する Palm OS Cobalt メモ帳のバージョンです。これらのデータベースのタイプの違いについての詳細は、Introduction to Conduit Developmentスキーマ データベース 対 非-スキーマ データベース を参照してください。

このクイック スタート ガイドの中でウィザードが生成するコードは、拡張データベース に対して機能する拡張 Generic Conduit Framework をベースにします。あなたがこのガイドを終了したとき、あなたは生成されたコードを、このフレームワークをあなた自身のコンジットの中でどのように使用するかの例として検証することができます。

このガイドは以下の主要なステップに分けられます:

このガイドは以下のように仮定します:

  • あなたは Visual C++ .NET をインストールして使用している(以後は VC と記述します)。
  • あなたは CDK の C/C++ Sync Suite をデフォルトの場所にインストールしている(<CDK>)。
  • あなたは Palm OS Cobalt シミュレータをインストールしている。シミュレータを取得するには、Conduit Development Utilities Guide第 8 章 「Palm OS シミュレータとの同期」? を参照してください。
NOTE
CDK インストールのプロセスの一部としてコンジット ウィザードを VC につなげるため、CDK をインストールする前に VC をインストールしてください。さもないと、コンジット ウィザードは使用不能になります。VC が New > Projects > Visual C++ Projects ダイアログ ボックスの中に Palm OS Conduit を表示しない場合、あなたはコンジット ウィザードを手動でインストールする必要があります。Conduit Development Utilities Guide「コンジット ウィザードのインストール」|Conduit Development Utilities Guide601/2 を参照してください。

ステップ 1: サンプル コードを作成するためにコンジット ウィザードを使用する ^TOP^

このステップでは、あなたはコンジット ウィザードを使って、ハンドヘルド上のメモ帳移植版 [1] アプリケーションによって使用されるデータベースをデスクトップ上の XML ファイルと同期させるコンジット コードを作成します。

コンジット ウィザードを開始する ^TOP^

  • 1. VC を開始して、File > New > Project をクリックします。
  • 2. Project Types 下の Visual C++ Projects フォルダをクリックして 図 A.1 で示されているようなインストールされたすべての C++ プロジェクト ウィザードを表示します。


図 A.1 コンジット ウィザードの選択

  • 3. Templates 下の Palm OS Conduit をクリックします。
  • 4. Name ボックスにあなたのプロジェクトの名前として MyConduit と入力して、それの置き場所を入力します。
重要
あなたのプロジェクト名は慎重に決めてください。なぜなら、コンジット ウィザードはそれをファイル名とオブジェクト名として使用するからです。あなたのプロジェクト名が C 言語の識別子のルールに従わない場合、あなたのプロジェクトはコンパイルされないかもしれません。
  • 5. OK をクリックします。

コンジット ウィザードを使用する ^TOP^

コンジット ウィザードはあなたにあなたのコンジットを設計するための選択肢を表示します(図 A.2)。各選択肢は以下のステップで説明します。


図 A.2 コンジット ウィザードの選択肢

  • 6. Conduit Type 下の Generic Conduit for extended databases をクリックします。ウィザードは 拡張データベース のための C++ Generic Conduit Framework をベースにしたプロジェクト ファイルとソース コードを生成します。
  • 7. Desktop file format 下の XML をクリックします。あなたのコンジットはいずれかの拡張データベースを表すように構成されている XML ファイルと同期をとります。いずれかのテキスト エディタまたは XML エディタを使用すると、容易にこのファイルへの変更を実行、閲覧することができます。
  • 8. Registration 下の Folder registered をクリックします。あなたのコンジットは、単純にあなたのコンジット DLL をインストール時に Conduits フォルダに置くことによって、HotSync マネージャに登録されます。フォルダ-登録コンジットのために、あなたは以下のことも指定しなければなりません:
  • 作成者 ID: HotSync マネージャがコンジットを識別するためのキーです。あなたは値を指定しなければなりません。このクイック スタート ガイドでは、コンジット ウィザードのデフォルト値である 'memO' を使用します(最後の文字は大文字の "O" です)。
  • リモート DB: このコンジットが同期をとるハンドヘルド上のデータベースの名前です。この値を指定することはオプションです。

    これらの値は、実行時に HotSync マネージャがあなたのコンジットの GetConduitInfo() エントリ ポイントを呼び出して infoTypeeRegistrationInfo を渡してきたときに、あなたのコンジットが pOut パラメータ経由で HotSync に戻す値です。
NOTE
あなたが Folder registered を選択したとき、コンジット ウィザードはあなたのコンジットの出力パスとファイル名を C:\Documents and Settings\All Users\Application Data\HotSync\Conduits\$(ProjectName).dll にセットします。そのため、あなたがあなたのコンジットをビルドした後、それは自動的にシステム(すべての Windows ユーザ)のために登録され、それ以上のアクションなしに実行される準備が整います。
  • 9. Details 下の Do not require an application on the device with this conduit's creator ID for this conduit to run (このコンジットを実行させるのに、デバイス上にこのコンジットの作成者 ID を持つアプリケーションを要求しない) というラベルを付けられているチェック ボックスを選択します。このクイック スタート ガイドでは、あなたはハンドヘルド上に(訳者補足: 作成者 ID が)一致するアプリケーションを持っています。そのため、このオプションをセットするかどうかは本当は問題になりません。しかしながら、あなたが出荷するコンジットのためには、あなたのコンジットを常に実行させるかどうかを慎重に考慮してください; (訳者補足: コンジットと作成者 ID が一致する)アプリケーションが存在しない場合、あなたのコンジットはユーザが必要としない「みなしご」のデータベースを作成することになるかもしれません。
    この設定で、HotSync マネージャがあなたのコンジットの GetConduitInfo() エントリ ポイントを呼び出して infoTypeeRunAlways を渡したとき、あなたのコンジットは 1 を戻します。
  • 10. Details 下の Do not display this conduit's name in the HotSync Progress dialog box on the desktop (このコンジットの名前をデスクトップ上の HotSync 進捗ダイアログ ボックスに表示しない) というラベルを付けられているチェック ボックスをクリアします。あなたのコンジットの名前をこのダイアログ ボックスに表示させることは、あなたのコンジットが実行されているかどうかを確認する助けになります。
    この設定で、HotSync マネージャがあなたのコンジットの GetConduitInfo() エントリ ポイントを呼び出して infoTypeeDoNotDisplayInConduitListForUser を渡したとき、あなたのコンジットは 0 を戻します。
  • 11. あなたの選択を見直し、Finish をクリックします。

この時点で、コンジット ウィザードは、プロジェクト ファイル、ソリューション ファイル、ソース ファールを作成しています。VC の中では MyConduit.vcproj プロジェクト ファイルがオープンされていて、あなたが次のステップに進む準備が整っています。

ステップ 2: Palm OS Cobalt シミュレータを準備する ^TOP^

このステップは、どのように CDK のメモ帳移植版 [1] アプリケーションを Palm OS Cobalt シミュレータにインストールするかについて説明します。これはクラシック メモ帳アプリケーションのクラシック データベースではなく拡張データベースを使用するバージョンです。あなたが次のステップでビルドするコンジットは、このアプリケーションによって作成される拡張データベースと同期をとります。

ネットワーク HotSync 操作のためにシミュレータをコンフィグレーションする ^TOP^

このクイック スタート ガイドの後半で、あなたはあなたのコンジット実施を試すために Palm OS Cobalt シミュレータに対してネットワーク HotSync を実行します。しかし、まずあなたはシミュレータをインストールしてコンフィグレーションし、HotSync マネージャをコンフィグレーションしなければなりません。これを行うために、Conduit Development Utilities Guide「ネットワーク接続のためのシミュレータのコンフィグレーション」|Conduit Development Utitlities Guide601/8 のステップに従ってください。

タイム-アウトを無効にする ^TOP^

シミュレータ(とハンドヘルド実機)は、HotSync 実施が短期間で完了しない場合、タイム アウトします - これはあなたのデバッグ セッションを中断します。タイム-アウトを無効にするためには、Conduit Development Utilities Guide「タイム-アウトを無効にする」|Conduit Development Utitlities Guide601/A のステップに従ってください。

メモ移植版 [1] をシミュレータにインストールする ^TOP^

CDK は、Palm OS Cobalt ハンドヘルドまたはシミュレータにインストールするための MemoPort.prc ファイルを含みます。同様に、このアプリケーションを Palm OS Cobalt シミュレータで実行するのに必要な MemoPort.dll ファイルも含みます。このアプリケーションをシミュレータにインストールするには以下のステップに従ってください:

  • 1. MemoPort.prcMemoPort.dll ファイルは <CDK>\C++\Win\Samples\GenericConduit\SamplePrc\PalmSim にあります。
  • 2. これらのファイルを Palm OS Cobalt シミュレータの実行形式ファイル(PalmSim.exe)と同じディレクトリにコピーします。
  • 3. Palm OS Cobalt シミュレータを起動します。
  • 4. シミュレータ上でコンテキスト メニューを表示するために右クリックして Install > Database を選択します。
  • 5. シミュレータのフォルダを開いて MemoPort.prc を選択し、Open をクリックします。

メモ帳移植版 [1] でサンプル データを作成する ^TOP^

メモ帳移植版 [1] アプリケーションでいくつかメモを作成します。これにより、HotSync 実施後にあなたはデスクトップ上でこれらのメモを見ることができます。

  • 6. Palm OS Cobalt シミュレータの中でメモ帳移植版 [1] を起動します。
  • 7. New をクリックして短いメモを入力します。望むならさらにいくつかメモを追加します。

ステップ 3: プロジェクト設定のコンフィグレーションし、DLL をビルドする ^TOP^

このステップでは、あなたはあなたの VC プロジェクトの設定を少し変更して、あなたのコンジット DLL をビルドします。

  • 1. HotSync マネージャ アイコンが Windows タスクバー(スクリーンの右下)の中に表示されている場合、その HotSync マネージャ アイコンをクリックして 図 A.3 のように Exit をクリックします。
    コンジット ウィザードによって作成されるプロジェクトは、あなたがあなたのコンジットをデバッグするとき、自動的に CDK フォルダの中にある HotSync マネージャを起動します。そのため、HotSync マネージャがすでに実行されている場合、まずはそれを終了します。


図 A.3 HotSync マネージャの終了

  • 2. VC の Solution Explorer の中で MyConduit プロジェクト("Solution" ではなく)を選択し、Project > Properties をクリックします。
  • 3. Configuration Properties 下の MyConduit Property Pages ダイアログ ボックスの中の Debugging をクリックします。
  • 4. Command Arguments ボックスの中で、図 A.4 が示すように以下の HotSync マネージャ コマンド-ライン引数を入力します:
    -ic
    この引数は HotSync マネージャに Conduit Inspector (コンジット検査) - リアル タイムで HotSync マネージャの状態の詳細をログにとる開発者ユーティリティ - を起動させます。これはあなたがコンジットを実行させるための必須項目ではありませんが、あなたのコンジットの問題をデバッグするのを助けてくれます。
  • 5. OK をクリックします。


図 A.4 Property Pages > Debugging への変更

  • 6. あなたのコンジットをビルドするために Build > Rebuild Solution をクリックします。

この時点で、あなたのコンジット(MyConduit.dll)がビルドされます。そして、それはすでに登録されて実行する準備が整っています。なぜなら、それはシステムの Conduits フォルダの中にあり(C:\Documents and Settings\All Users\Application Data\HotSync\Conduits\MyConduit.dll)、そのコンジットの GetConduitInfo() エントリ ポイントは、HotSync マネージャが実行時に infoTypeeRegistrationInfo を渡してきたときに、正しく応答するからです。

今やあなたはあなたのコンジットをデバッグする準備が整いました。

ステップ 4: あなたのコンジットをステップごとに実行する/デバッグする ^TOP^

このステップでは、あなたがステップごとにコンジット コードを実行してそれをデバッグするための開始点を提供します。この節には以下の内容が含まれます:

デバッグの開始 ^TOP^

  • 1. VC で entrypoints.cpp ファイルをオープンして以下のコンジット エントリ関数にブレイクポイントをセットします:
  • OpenConduit()
  • GetConduitInfo()
  • CfgConduit()
  • 2. デバッグを開始するために、Debug > Start を選択します(またはキーボード ショートカットを使用します: F5 を押します)。以下の警告が表示されるかもしれません:
    'HotSync.exe' does not contain debugging information. (No symbols loaded.) Click OK to debug anway. ('HotSync.exe' はデバッグ情報を保持していません。(読み込まれたシンボルがありません。)ともかくデバッグするには OK をクリックしてください。)
    これは通常のことです。ですから OK をクリックして先に進んでください。
  • 3. コンジット検証ウィンドウが表示されたとき、サイズと位置を調節して VC の傍らに見えるようにします。リアル タイムで表示されるコンジット検証ログは HotSync マネージャとあなたのコンジットが何をしているのかを表示するたいへん有用なメッセージです。図 A.5 はコンジット検証のオープンされているウィンドウを示しています。
    コンジット検証が開始されない場合、図 A.4 を参照して、示されているようにあなたがプログラム引数をセットしたかどうかを確認してください。
  • 4. コンジット検証は 図 A.5 のような HotSync リアルタイム ログ を表示します。
    コンジット検証の使用についての詳細は、Conduit Development Utilities Guide第 6 章 「コンジット検証ユーティリティ」? を参照してください。
  • 5. コンジット検証の開始と同時に、VC は GetConduitInfo() ブレイクポイントに達します。ステップごとに実行させるには F10 を押し、継続させるには F5 を押します。各コンジットに対して HotSync マネージャは何度かこのエントリ ポイントを呼び出します。そのため、HotSync マネージャがコンジットのスタートアップを完了するまでに、あなたは呼び出しのたびに F5 を押さなくてはなりません。
    HotSync マネジャからの "The Notifier file 'filename.dll' was not found," (通知機能ファイル 'filename.dll' は見つかりませんでした。)というアラートが表示される場合、OK をクリックして無視しても大丈夫です。このアラートを表示させなくするために、あなたは CondCfg ユーティリティを使用してそれらを登録解除するか、hotsync.exe -r を実行して存在しない通知機能の登録を削除することができます。
NOTE
あなたが以前このクイック スタート ガイドを使用していた場合、Choose Conduit ダイアログ ボックスが表示されます。HotSync マネージャは複数のコンジットが同じ作成者 ID を持たない限りこのダイアログを表示することはありません。実行するコンジットを選択して OK をクリックします。Ignore をクリックした場合、HotSync マネージャはあなたのコンジットを実行しません。あなたが選択しなかった紺ジットは Conduits\Disabled フォルダに移されます。


図 A.5 コンジットと HotSync マネージャが何をしているのかをリアル タイムに表示するコンジット検証

カスタム ダイアログ ボックスのチェック ^TOP^

以下のステップは、HotSync マネージャがあなたのコンジットを呼び出してそれの CfgConduit() エントリ ポイントを実行していることを確かめるためのクイック テストです。CfgConduit() エントリ ポイントは、ユーザが HotSync マネージャ メニューの Custom をクリックして、あなたのコンジットを選択して、Change をクリックしたときに呼び出されます。以下のステップはあなたのカスタム ダイアログ ボックスをどのようにチェックするかを示しています:

  • 6. HotSync マネージャ アイコンをクリックして(図 A.3 のように)、Custom をクリックします。
    Custom ダイアログ ボックスが表示される前に、VC はあなたのコンジットの GetConduitInfo() エントリ ポイントに達することに注意してください。HotSync マネージャはあなたのフォルダ-登録コンジットに Custom ダイアログ ボックスに表示する情報を問い合わせます。
  • 7. HotSync マネージャが GetConduitInfo() を呼び出すたびに F5 を押します。
    HotSync マネージャは何度かこのエントリ ポイントを呼び出した後、図 A.6 のような Custom ダイアログ ボックスを表示します。


図 A.6 HotSync マネージャの Custom ダイアログ ボックス

  • 8. Custom ダイアログ ボックスの中の MyConduit を選択して Change をクリックします。
    VC の中であなたは CfgConduit() ブレイクポイントに達していることを確認してください。
  • 9. F5 を押して継続します。図 A.7 のような MyConduit (debug) ダイアログ ボックスが表示されます。このダイアログ ボックスは、ユーザが一時的または永久的にこのコンジットの同期設定を変更することを可能にします。
  • 10. すべての HotSync マネージャ ダイアログ ボックス - MyConduit (debug)Custom - を終了します。

これで、HotSync マネージャはあなたのコンジットを呼び出して、それの CfgConduit() エントリ ポイントを実行することを確認しました。


図 A.7 コンジットの同期設定ダイアログ ボックス

HotSync の実行 ^TOP^

  • 11. あなたがまだ開始していない場合、Palm OS Cobalt シミュレータを開始します。
  • 12. シミュレータで HotSync クライアント アプリケーションを開始します。
  • 13. HotSync クライアントで Network ボタンをクリックします。
  • 14. HotSync クライアントで HotSync ボタンをクリックします。
    VC の中で、あなたは GetConduitInfo() ブレイクポイントに達することを確認してください。
    コンジット検証がリアル タイム ログ ウィンドウをオープンしてこの HotSync 実施の詳細をログに追加することに注目します。
    HotSync 進捗ダイアログ ボックスが少しの間表示されます。
NOTE
HotSync マネージャが応答して表示されない場合は、ネットワーク HotSync 実施のためのシミュレータのコンフィグレーション を参照してあなたが正しくシミュレータと HotSync マネージャをセット アップしたかどうかを確認してください。
  • 15. VC の中で、継続するために F5 を押します。HotSync マネージャはあなたのコンジットの GetConduitInfo() エントリ ポイントを何度か呼び出します。そのたびに F5 を押します。
    あなたが以前シミュレータ セッションで HotSync を実行したことがない場合、Create or Select HotSync User ダイアログ ボックスが表示されます。実行したことがある場合は、ステップ 17 にスキップしてください。
  • 16. HotSync ユーザ アカウントを作成するかすでに存在しているものを選択して OK をクリックします。
    HotSync は継続されます。VC の中で、あなたは GetConduitInfo() エントリ ポイントに再び達することに注意してください。
  • 17. GetConduitInfo() エントリ ポイントから継続するために F5 を押します。VC の中で、あなたは OpenConduit() エントリ ポイントに達します。
  • 18. OpenConduit() から継続するために F5 を押します。
    HotSync 実行は終了します。コンジット検証は HotSync 実施中に HotSync マネージャとすべてのコンジットがしたことをログにとっています。
  • 19. この時点で、あなたはデバッグを続けるか終了することができます。VC でデバッグ終了するには、Debug > Stop Debugging をクリックします。
    コンジット検証はあなたが使用するためにオープンされたままだが、HotSync マネージャは終了していることに注目してください。
NOTE
デバッグ セッションの終了後、HotSync マネージャは確かに終了しています。しかしながら、HotSync マネージャのアイコンは、あなたがポインタをその上に持っていくまで、Windows のタスクバーに表示されています。

コンジット検証ログの保存 ^TOP^

いずれかの時点で、あなたのコンジット検証ログ ファイルを後で閲覧するために保存します。

  • 20. オープンされている HotSync Realtime Log ウィンドウを選択して、ログ ファイルを保存するために File > Sabe As を選択します。
  • 21. 他のログ ウィンドウが表示されている場合、それらも同様に保存します。

あなたがデバッグを終了したとき、あなたはあなたのコンジットの設定をあなたが開始したときの設定に戻すための次のステップに進むことができます。

MyConduit.xml ファイルを検証する ^TOP^

あなたが前のステップで HotSync を実行したとき、あなたのコンジットはシミュレータ上の MemoDB データベースとデスクトップの以下の場所にある XML ファイルの同期をとっています:

 C:\Documents and Settings\<Windows User>\My Documents\Palm OS Desktop\<HotSync User>\MyConduit\MyConduitData.xml

このファイルをお好みの XML エディタでオープンして、あなたがシミュレータの中で作成したメモ(「メモ帳移植版でサンプルのメモを作成する」)があることを確認します。

さらに検証を行うため、MyConduitData.xml ファイルを編集して、HotSync を実行して、シミュレータのメモ帳移植版 [1] アプリケーションが変更されていることを確認します。

NOTE
あなたが XML ファイルの中のデータを変更するとき、"Modified" フラグをセットすることを忘れないでください。さもなければ、Generic Coduit Framework の同期ロジックは変更が行われたことに気付かず、その変更をデータベースに転送しません。


[1]: 原文では "Memo Port"、Port は「移植(Cobalt へ)」を意味するのか、それとも「データの受け渡しをする」ということを意味するのか?

← 9 章に戻る ↑トップへ