次の方法で共有


INF ファイルの作成

すべてのミニドライバーと OEM で定義されたジョイスティックは、システムに必要なすべての情報を提供する INF ファイルを使用してインストールする必要があります。 INF ファイルは、デバイスのクラス、コピーする必要があるファイル、互換性のあるデバイス、デバイスに必要なシステム リソース、およびレジストリの変更に関して、デバイスのインストールを記述します。 標準アナログ ドライバーをカスタマイズするための INF ファイルでは、ファイルのコピーや、互換性のあるデバイスの宣言、システム リソースの指定は必要ありません。 INF ファイルでは、Autoexec.bat ファイルの変更など、他のアクションを指定できますが、これはジョイスティック ミニドライバーには必要ありません。

INF ファイルには、以下で説明する要素が含まれています。

デバイス クラスの設定

ジョイスティックは MEDIA クラスに分類され、[新しいハードウェアの追加] コントロール パネルの下で "サウンド、ビデオ、ゲーム コントローラー" というタイトルが付けられます。 クラス関連のセクションは、例または Joystick.inf ファイルからコピーする必要があります。

ソース ファイルの選択

INF ファイルの "SourceDisksFiles" セクションでは、コピーするファイルを指定します。 これには、必要なすべてのドライバーと、ドキュメントやセットアップ アプリケーションなどのその他のファイルが含まれます。 これはユーザーのシステムにインストールされる最初のジョイスティック ドライバーである可能性があるため、このデバイスの特定のドライバーに加えて、システム ジョイスティック ドライバー Vjoyd.vxd と Msjstrick.drv をコピーする必要があります。 この 2 つのドライバーのソースは、Layout.inf を参照して作成する必要があり (ユーザーに Windows 95/98/Me インストール ディスクの挿入を求めるメッセージが表示されます)、OEM ディスクでは配布されません。ドライバーは、ユーザーのシステム ディレクトリ (宛先コード 11) にコピーする必要があります。

製造元固有のデータの設定

INF ファイルが指す製造元固有のセクションには、インストールできるデバイスごとに 1 つのエントリが含まれています。 各エントリには、デバイスの名前の後にインストール セクションの名前、デバイス ID、および互換性のあるデバイスが含まれます。 デバイスがプラグ アンド プレイ互換として登録されている場合は、デバイス ID にプラグ アンド プレイ ID (アスタリスクで始まる) を使用する必要があります。 デバイスが登録されていない場合は、プラグ アンド プレイ互換でないデバイス ID (つまり、アスタリスクで始まらないもの) を使用する必要があります。 この種類のデバイスを登録するときは、他のデバイス ID と競合する ID を選択しないでください (たとえば、"Joystick" は適切な ID と考えられます)。

LogConfig エントリの設定

入出力 (I/O) ポートなどのシステム リソースを必要とするデバイスでは、インストール セクションの LogConfig エントリを使用して、使用できる構成を指定します。 一部のデバイスでは、独自のリソースを使用しません。 代わりに、シリアル ポート ドライバーなどの別のドライバーを使用してデバイスと通信します。 DirectX 3.0 VJoyD は、アナログ ゲーム ポートの I/O ポート要件の処理において以前のバージョンとは異なります。 以前のバージョンは、標準のゲーム ポート範囲 0x200 ~ 0x20f で、少なくとも 1 つのデバイスが I/O ポート割り当てで構成されている場合にのみ機能しました。 さらに、2 番目の I/O 範囲は 1 つのポートである必要がありました。 新しい VJoyD は、ゲーム ポートのないシステムでミニドライバーを介して操作されるデバイスを使用できるように、ゲーム ポートが構成されていない場合に機能します。 2 番目の I/O 範囲を複数のポートにできるようになりました。

0x200 ~ 0x20f の範囲のポートを使用するデバイスは、VJoyD によってアナログ ゲーム ポートと解釈されるため、構成マネージャーによって競合するデバイスと見なされる可能性があります。 その他のゲーム ポート セットの I/O ポートは無視されます。マシンの 2 つのカードにゲーム ポートがある場合は、1 つのカードのポートのみがポーリングされます。 デバイスで標準のゲーム ポートを標準でない方法で使用する必要がある場合は、さらに興味深いものになります。 デバイスのインストール セクションの LogConfig エントリで標準ポートを要求すると機能しますが、通常はジョイスティックをスワップするために多くの再構成と再起動が行われます。 別の方法は、ゲーム ポートの条件に適合する構成マネージャー コールバックを通じて渡された I/O 範囲のセットを使用して、VJoyD とリソースを共有することです。 ユーザーが標準のアナログ ドライバーと OEM ドライバーの両方にジョイスティックを構成し、両方をポーリングしようとするアプリケーションを実行しない限り、これは機能します。

DirectX 3.0 では、JOY_HWS_ISGAMEPORTDRIVER フラグを設定することで、標準のアナログ ポーリングの代わりに OEM VxD を呼び出せるように変更が実装されました。 コントロール パネルでは、このようなデバイスをグローバル ドライバーとして設定できます。つまり、ミニドライバーが関連付けられていないジョイスティックに対して、内部アナログ ポーリングではなく、グローバル ドライバーが呼び出されます。 これにより、VJoyD が OEM デバイスのポーリングに干渉しないようにします。

起動中の最初の 4 つのデバイスがすべてミニドライバー (OEM グローバル ドライバーである可能性があります) によって処理される場合、これらのデバイスがミニドライバーによって処理されなくなった場合でも、VJoyD はゲーム ポートをチェックせず、使用できません。 VJoyD がそのポートを使用できない場合 (またはゲーム ポートが存在しない場合)、ポーリング要求に JOY_OEMPOLLRC_YOUPOLL を返しても、標準ポーリングは使用されません。 このポーリングを使用したデバイスへの再構成は、ゲーム ポート リソースが再割り当てされた後にのみ有効になります (おそらく再起動するまで有効になりません)。

AddReg エントリの設定

INF ファイルは、インストール セクションの AddReg エントリによって選択されたセクションにレジストリ エントリを設定する必要もあります。 ミニドライバーが必要なデバイスの場合は、ドライバーがマルチメディア システム ドライバーに適切に関連付けられていることを確認するために、次の設定が必要です。

HKR,,DevLoader,,mmdevldr.vxd
HKR,Drivers,,,
HKR,Drivers,MIGRATED,,0
HKR,Drivers\joystick,,,
HKR,,Driver,,vjoyd.vxd
HKR,Drivers\joystick\msjstick.drv,,,
HKR,Drivers\joystick\msjstick.drv,Description,,%OEMJoy.DeviceDesc%
HKR,Drivers\joystick\msjstick.drv,Driver,,msjstick.drv

%OEMJoy.DeviceDesc% 文字列は、デバイス名の文字列を呼び出したもので置き換えられます。

このジョイスティックを記述する値は、(HKEY_LOCAL_MACHINEの下にある) パス REGSTR_PATH_JOYOEM から始めて、OEM で定義されたキーの下のレジストリに配置されます。 OEM は、このキーの下に、ジョイスティック調整プログラムおよび Windows 95/98/Me 用アプリケーションでの OEM ジョイスティックの表示方法をカスタマイズする多数の静的値を配置できます。 値の名前は Regstr.h で定義されているため、レジストリに表示される名前ではなく、以下で説明するこれらの定数の名前です。 OEM で定義されたすべてのデバイスには、少なくともその基本プロパティと、ユーザーがコントロール パネルのジョイスティック選択ボックスに表示できる名前が必要です。 ミニドライバーを読み込むには、ミニドライバー VxD の名前 (.vxd 拡張子を含む) を値に含める必要があります。 OEM 名の値 (REGSTR_VAL_JOYOEMNAME)、およびミニドライバー ファイル名 (REGSTR_VAL_JOYOEMCALLOUT) の値は単純な文字列です。 基本プロパティの REGSTR_VAL_JOYOEMDATA 値はバイナリ データであり、その意味については次の節で詳しく説明します。

2 つのダブルワードがあります。1 つ目には一連のフラグが含まれています。2 つ目は、デバイスが持つボタンの数です。

フラグは、デバイスの種類、存在する軸、およびそれらの解釈方法を指定します。

ほとんどのフラグは Mmddk.h で定義されています。 DirectX 3.0 で追加された 2 つの新しいフラグは、Dinput.h で定義されています。 次のフラグは、VJoyD によって直接ポーリングされる OEM で定義されたアナログ ジョイスティックの軸を再マッピングするためにのみ使用されます。 アナログ ポーリングの実行時に VJoyD の既定の動作が変更されますが、ミニドライバーによって返されるデータには影響しません。

フラグ 説明
JOY_HWS_XISJ1Y X は J1 Y 軸上にあります。
JOY_HWS_XISJ2X X は J2 X 軸上にあります。
JOY_HWS_XISJ2Y X は J2 Y 軸上にあります。
JOY_HWS_YISJ1X Y は J1 X 軸上にあります。
JOY_HWS_YISJ2X Y は J2 X 軸上にあります。
JOY_HWS_YISJ2Y Y は J2 Y 軸上にあります。
JOY_HWS_RISJ1X R は J1 X 軸上にあります。
JOY_HWS_RISJ1Y R は J1 Y 軸上にあります。
JOY_HWS_RISJ2Y R は J2 Y 軸上にあります。
JOY_HWS_ZISJ1X Z は J1 X 軸上にあります。
JOY_HWS_ZISJ1Y Z は J1 Y 軸上にあります。
JOY_HWS_ZISJ2X Z は J2 X 軸上にあります。
JOY_HWS_POVISJ1X ポーリングされた POV は J1 X 軸上にあります。
JOY_HWS_POVISJ1Y ポーリングされた POV は J1 Y 軸上にあります。
JOY_HWS_POVISJ2X ポーリングされた POV は J2 X 軸上にあります。

既定の動作は以下のとおりです。

  • X の既定値は J1 X 軸です。
  • Y の既定値は J1 Y 軸です。
  • R (ラダー) の既定値は J2 X 軸です。
  • Z の既定値は J2 Y 軸です。
  • POV Hat (ポーリングとして実装されている場合) の既定値は J2 Y 軸です。

フラグは、POV データが軸またはボタンの組み合わせから取得されるかどうかを判断するためにも定義されます。 説明されているデバイスが VJoyD によってポーリングされている場合、JOY_HWS_POVISBUTTONCOMBOS により、VJoyD はボタンの組み合わせを解釈して POV を生成します。それ以外の場合は、軸を使用して検索します。 説明されているデバイスがミニドライバーを介してポーリングされた場合、POV_UNDEFINED 以外の dwPOV の値によって、他の POV 計算がオーバーライドされます。 ただし、JOY_HWS_POVISBUTTONCOMBOS が設定されている場合、VJoyD はアナログ ジョイスティックの場合と同様にボタンを解釈します。 それ以外の場合、POV は、JOY_HWS_HASZ が設定されていない場合は Z 軸の値から、そうでない場合は R から取得されます。 ミニドライバーは通常、ハードウェア実装に関するより多くの情報を持っているため、ミニドライバーは可能な限り、汎用 VJoyD に POV 情報を解釈させないようにする必要があります。

次のフラグは、デバイスが持つ機能を説明するために使用されます。

フラグ 説明
JOY_HWS_HASZ ジョイスティックには Z (第 3 軸) 情報があります。
JOY_HWS_HASR ジョイスティックには R (第 4 軸) 情報があります。
JOY_HWS_HASU ジョイスティックには R (第 4 軸) 情報があります。
JOY_HWS_HASV ジョイスティックには R (第 4 軸) 情報があります。
JOY_HWS_HASPOV ジョイスティックには POV Hat があります。

デバイスの種類を説明するには、次のフラグを使用します。

フラグ Device type (デバイスの種類)
JOY_HWS_ISYOKE フライト ヨーク
JOY_HWS_ISGAMEPAD ゲーム パッド
JOY_HWS_ISCARCTRL レース カー コントローラー
JOY_HWS_ISHEADTRACKER ヘッド トラッカー (DirectX 3.0 で定義)。

最後に、DirectX 3.0 で追加された JOY_HWS_ISGAMEPORTDRIVER フラグは、このミニドライバーがゲーム ポートの標準ポーリングを置き換えることを示します。

たとえば、8 つのボタンを持ち、X、Y、Z、R、および POV の値を返すデジタル ジョイスティックがある場合は、JOY_HWS_HASZ ビット、JOY_HWS_HASPOV ビット、JOY_HWS_HASR ビットを設定する必要があります。 これにより、次のものが返されます。

       
  0x00000001 JOY_HWS_HASZ 01,00,00,00
| 0x00000002 JOY_HWS_HASPOV 02,00,00,00
| 0x00080000 JOY_HWS_HASR 00,00,08,00
= 0x00080003 組み合わせ 03,00,08,00

この DWORD をリトル エンディアン形式にし、その後にボタンの数に応じた DWORD を入力すると、03,00,08,00,08,00,00,00 が返されます。これは、INF ファイルに必要な一連のバイトです。

INF ファイルで提供される残りのレジストリ設定はすべて、標準のコントロール パネルによって提供される調整の指示をカスタマイズします。レジストリの設定は次のとおりです。

レジストリの設定 説明
REGSTR_VAL_JOYOEMXYLABEL この文字列は、ジョイスティック CPL のテストおよび調整ダイアログにある XY 位置コントロールの下に表示されます。
REGSTR_VAL_JOYOEMZLABEL この文字列は、ジョイスティック CPL のテストおよび調整ダイアログにある Z 位置コントロールの下に表示されます。
REGSTR_VAL_JOYOEMRLABEL この文字列は、ジョイスティック CPL のテストおよび調整ダイアログにある R 位置コントロールの下に表示されます。
REGSTR_VAL_JOYOEMPOVLABEL この文字列は、ジョイスティック CPL のテストおよび調整ダイアログにある POV Hat コントロールの下に表示されます。
REGSTR_VAL_JOYOEMULABEL この文字列は、ジョイスティック CPL のテストおよび調整ダイアログにある U 位置コントロールの下に表示されます。
REGSTR_VAL_JOYOEMVLABEL この文字列は、ジョイスティック CPL のテストおよび調整ダイアログにある V 位置コントロールの下に表示されます。
REGSTR_VAL_JOYOEMTESTMOVEDESC この文字列は、テスト ダイアログの移動セクションに表示されます。 ジョイスティックのテスト方法をユーザーに説明します。
REGSTR_VAL_JOYOEMTESTBUTTONDESC この文字列は、テスト ダイアログのボタン セクションに表示されます。 ボタンのテスト方法をユーザーに説明します。
REGSTR_VAL_JOYOEMTESTMOVECAP この文字列は、テスト ダイアログの移動セクションを囲むグループ ボックスのキャプションとして表示されます。
REGSTR_VAL_JOYOEMTESTBUTTONCAP この文字列は、テスト ダイアログのボタン セクションを囲むグループ ボックスのキャプションとして表示されます。
REGSTR_VAL_JOYOEMTESTWINCAP この文字列は、テスト ダイアログのキャプションとして表示されます。
REGSTR_VAL_JOYOEMCALCAP この文字列は、調整ダイアログのキャプションとして表示されます。
REGSTR_VAL_JOYOEMCALWINCAP この文字列は、調整ダイアログのキャプションとして表示されます。
REGSTR_VAL_JOYOEMCAL1 この文字列は、調整のためにジョイスティックの XY 部分を中央に配置する方法をユーザーに指示します。
REGSTR_VAL_JOYOEMCAL2 この文字列は、調整のためにジョイスティックの XY 部分を移動する方法をユーザーに指示します。
REGSTR_VAL_JOYOEMCAL3 この文字列は、調整のためにジョイスティックの XY 部分を再度中央に配置する方法をユーザーに指示します。
REGSTR_VAL_JOYOEMCAL4 この文字列は、調整のためにジョイスティックの Z 部分を移動する方法をユーザーに指示します。
REGSTR_VAL_JOYOEMCAL5 この文字列は、調整のためにジョイスティックの R 部分を移動する方法をユーザーに指示します。
REGSTR_VAL_JOYOEMCAL6 この文字列は、調整のためにジョイスティックの U 部分を移動する方法をユーザーに指示します。
REGSTR_VAL_JOYOEMCAL7 この文字列は、調整のためにジョイスティックの V 部分を移動する方法をユーザーに指示します。
REGSTR_VAL_JOYOEMCAL8 この文字列は、調整のために POV Hat を上に移動する方法をユーザーに指示します。
REGSTR_VAL_JOYOEMCAL9 この文字列は、調整のために POV Hat を右に移動する方法をユーザーに指示します。
REGSTR_VAL_JOYOEMCAL10 この文字列は、調整のために POV Hat を下に移動する方法をユーザーに指示します。
REGSTR_VAL_JOYOEMCAL11 この文字列は、調整のために POV Hat を左に移動する方法をユーザーに指示します。
REGSTR_VAL_JOYOEMCAL12 この文字列は、調整プロセスが完了したことをユーザーに通知するメッセージで構成されます。