XLsoft Corporation/エクセルソフト株式会社
英語 日本語 中国語 韓国語

エクセルソフト,XLsoft,WinDriver,ドライバ,デバイスドライバ,ドライバ開発,Windows ドライバ,Linux ドライバ,PCI ドライバ,USB ドライバ,DDK,ISA ドライバ,Device Driver,ドライバ 作成,Jungo

WinDriver ドライバ開発 .
.
.テクニカル ドキュメント #21
.
. サイト マップ
. 関連リンク
.

Doc ID: 21
製品: WinDriver & KernelDriver
Version:  --

WinDriver/KernelDriver を使用して、カード上の"共有" としてのリソースの作成で重要はことは何ですか、そして、特定のリソースの "共有" ステータスをどのように確認できますか?

リソースを独占的にロックするかしないかによって、"共有" ステータスが決まります。

メモリ、I/O または割り込みアイテムを共有と定義しない場合、WD_CardRegister() 関数への最初の呼び出しとその後に続く呼び出しで、独占的にリソースをロックします (WD_CardRegister() 関数は、同じアプリケーション内、または他の WinDriver/KernelDriver のアプリケーションのいずれかから同じリソースをロックしようとします)。しかし、WD_CardRegister() 関数への初めの呼び出しで受信されるハンドルを解放する WD_CardUnregister() 関数を呼ぶまでは、失敗します。
[レジスタを共有として定義できません]。

注意: 通常、PCI リソース (特に割り込みの場合) を共有可能と定義してください。

メモリおよび I/O の場合、WinDriver で定義された共有ステータスは、WinDriver/KernelDriver ベースのアプリケーションにのみ影響します。
ただし、割り込みの場合、他のデバイスが同じ割り込みをロックできるかどうか、割り込み共有ステータスも決めるので、より重要性があります。

リソースを共有可能として定義したかをチェックするには、次のいずれかの方法で確認できます:
  1. コードから、カード上のメモリ/IO/割り込みアイテムの fNotSharable フラグの値をプリントします (cardReg.Card.Item[i].fNotSharable)。その値が 0 (False) の場合、リソースを共有として定義しています (非共有 = TRUE)。

  2. DriverWizard を使用してコードを生成した場合、DriverWizard を起動して、*.wdp DriverWizard プロジェクト ファイルを開き、'Memory'、'I/O' または 'Interrupt' タブ (それぞれ) を選択し、'Edit' をクリックします。そして、そのリソースをこのデバイスの共有として定義してるかを確認するために、Resource Information ウィンドウで 'Shared' ボックスがチェックされているかどうかを確認してください。
    アプリケーション コードのオリジナルの *.wdp プロジェクト ファイルを使用する際、およびそのコードが 'shared' ステータスを編集しない場合にのみ、このテストは適用されます (WinDriver を使用して *.wdp ファイルを変更すると、それに続く生成されるコードにのみ影響し、既存のアプリケーション コードには影響しません)。
一般的なガイドラインとして、同じリソースを 2 度ロックするのは避けてください。同じカードへのハンドルを受信する WD_CardRegister() 関数を再び呼ぶ前に、常に WD_CardUnregister() 関数の前で WD_CardRegister() 関数への呼び出しで取得したハンドルを、WD_CardUnregister() 関数を呼んで解放することを推奨します (同じアプリケーションまたは異なるアプリケーションのいずれかから)。複数のアプリケーションからリソースにアクセスする必要がある場合、WD_CardRegister() 関数への単一の呼び出しから受信したハンドルを共有できます。詳細は テクニカル ドキュメント #98 を参照してください。

.
.
Top へ