MIS I/O Library (for DOS/Win95/98/NT) ver 1.11 山下システムズ 株式会社 2001年 5月 24日 Tel 03-5700-2121 Fax 03-5700-0076 HomePage http://www.misnet.co.jp MIS I/O Libary は山下システムズのI/Oカードドライバーを開発する際にできたI/Oアクセス用のライブラリーです。 直接ハードウェアアクセスを行うライブラリーのためどのような影響がでるか保証ができません。利用者の責任でご利用ください。 < 概要 > 特徴■ポートアクセス、物理メモリーアクセス、割り込みトリガー、タイマートリガー、時間計測、PCIコンフィグデータアクセスをDOS/Win95/98/NTから共通仕様で行える。 ライブラリーを使用しないでヘッダーをインクルードするだけで利用可能 コンポーネント■MIS I/O 共通 VxDドライバー mvcomd.vxd (Win95/98) MIS I/O 共通 カーネルドライバー mncomd.sys (WinNT) 利用可能開発環境■アクセスライブラリーヘッダーをインクルードしてコンパイルできる C言語環境で利用できます。 利用方法■ライブラリーヘッダー mPort.h mMemory.h mIntTrig.h       mTmrTrig.hmTmrCntr.h mPci.h をインクルード ヘッダーファイルの中にドライバーアクセスコードが含まれているためライブラリーファイルをリンクする必要がありません。 < インストール方法 > ライブラリーを適当なディレクトリーに解凍します。 miolib111.exe 解凍後ディレクトリー readme.txt install.bat ドライバーインストーラー h\*.h インクルードファイル sample\test.c サンプル sample\test VC++4.0ワークスペース bin\*.* ドライバーインストール用各種プログラム drvr\*.* 95/NT ドライバー サンプルプログラムでは MIS AS-5110 DIOカードを使用して割り込みテストを行います。 プログラムはAS-5110がなくてもテストは先に進みます。 必要であれば他のハードウェア用に書き換えてテストをおこなってください。 AS-5110 ポート 0x180 割り込み 5 基板上ジャンパーポスト P1 1-8 P2 1-14,2-13,3-12,4-11,7-8 P3 1-10 < ドライバーインストール方法 > Win95/98/NTの場合ライブラリーが使用するドライバーが必要となります。 一度、コマンドプロンプトで install.bat を起動してください。 [Win95/98] A:\>install[Enter] *********************************************** * MIS I/O Library * * Driver Installer * * Yamashita Systems Corp. * *********************************************** OS is [Win95] ======= Install Win95 Drivers ======= Windows Directory is [C:\WINDOWS] copy mvcomd.vxd C:\WINDOWS\system\mvcomd.vxd Install Drivers End. 95/98の場合はリブートの必要はありません。 [WinNT] A:\>install[Enter] *********************************************** * MIS I/O Library * * Driver Installer * * Yamashita Systems Corp. * *********************************************** OS is [WinNT] ======= Install WinNT Drivers ======= Windows Directory is [C:\WINDOWS] copy mncomd.sys C:\WINDOWS\system32\drivers\mncomd.sys Install Drivers End. ********************************************************** Reboot System Now, so that New Driver will be Active !!! ********************************************************** インストール後、システムをリブートさせます。 < モジュールリファレンス > [ ポートアクセス ] =========================================================== インクルードファイル "mPort.h" mCreatePort int mCreatePort( phPort )  概要 ポートアクセスオブジェクトを生成しハンドルを返す。 パラメータ PortHandle *phPort : ポートアクセスオブジェクトハンドル 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 PortHandle hPort; mCreatePort( &hPort ); ... mDeletePort( hPort ); mDeletePort int mDeletePort( hPort )  概要 ポートアクセスオブジェクトを削除してアクセスを終了する。 パラメータ PortHandle hPort : ポートアクセスオブジェクトハンドル 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 PortHandle hPort; mCreatePort( &hPort ); ... mDeletePort( hPort ); int mPortGetByte( hPort, port, pData )  概要 ポートアクセスオブジェクトを使用しポート入力(バイトアクセス)を行う パラメータ PortHandle hPort : ポートアクセスオブジェクトハンドル unsigned int port : ポートアドレス unsigned int *pData : アクセスデータ 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 PortHandle hPort; unsigned int data; mCreatePort( &hPort ); mPortGetByte( hPort, 0x180, &data ); mDeletePort( hPort ); 0x180から1バイト入力する。 int mPortGetWord( hPort, port, pData )  概要 ポートアクセスオブジェクトを使用しポート入力(ワードアクセス)を行う パラメータ PortHandle hPort : ポートアクセスオブジェクトハンドル unsigned int port : ポートアドレス unsigned int *pData : アクセスデータ 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 PortHandle hPort; unsigned int data; mCreatePort( &hPort ); mPortGetWord( hPort, 0x180, &data ); mDeletePort( hPort ); 0x180から1ワード(2バイト)入力する。 int mPortPutByte( hPort, port, data )  概要 ポートアクセスオブジェクトを使用しポート出力(バイトアクセス)を行う パラメータ PortHandle hPort : ポートアクセスオブジェクトハンドル unsigned int port : ポートアドレス unsigned int data : アクセスデータ 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 PortHandle hPort; mCreatePort( &hPort ); mPortPutByte( hPort, 0x180, 0x33 ); mDeletePort( hPort ); 0x180に1バイト(0x33)出力する。 int mPortPutWord( hPort, port, data )  概要 ポートアクセスオブジェクトを使用しポート出力(ワードアクセス)を行う パラメータ PortHandle hPort : ポートアクセスオブジェクトハンドル unsigned int port : ポートアドレス unsigned int data : アクセスデータ 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 PortHandle hPort; mCreatePort( &hPort ); mPortPutWord( hPort, 0x180, 0x3344 ); mDeletePort( hPort ); 0x180に1ワード(0x3344)出力する。 int mPortIn( hPort, port, size, pData )  概要 ポートアクセスオブジェクトを使用しポート入力(バイト単位)を行う パラメータ PortHandle hPort : ポートアクセスオブジェクトハンドル unsigned int port : ポートアドレス int size : アクセスバイト数 (1 - 4) Win95/NT (1 - 2) DOS unsigned int *pData : アクセスデータ 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 PortHandle hPort; unsigned int data; mCreatePort( &hPort ); mPortIn( hPort, 0x180, 2, &data ); mDeletePort( hPort ); 0x180から2バイト入力する。 注意 複数データの場合、アクセスデータにパックされる。 例) 0x180 = 0x33 0x181 = 0x44 の場合 data = 0x4433 となる int mPortOut( hPort, port, size, data )  概要 ポートアクセスオブジェクトを使用しポート出力(バイト単位)を行う パラメータ PortHandle hPort : ポートアクセスオブジェクトハンドル unsigned int port : ポートアドレス int size : アクセスバイト数 (1 - 4) Win95/NT (1 - 2) DOS unsigned int data : アクセスデータ 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 PortHandle hPort; mCreatePort( &hPort ); mPortOut( hPort, 0x180, 2, 0x4433 ); mDeletePort( hPort ); 0x180に2バイト出力する。 注意 複数データの場合、アクセスデータがアンパックされる。 例) data = 0x4433 の場合 0x180 <- 0x33 0x181 <- 44 となる int mPortInWord( hPort, port, size, pData )  概要 ポートアクセスオブジェクトを使用しポート入力(ワード単位)を行う パラメータ PortHandle hPort : ポートアクセスオブジェクトハンドル unsigned int port : ポートアドレス int size : アクセスワード数 (1 - 2) Win95/NT (1) DOS unsigned int *pData : アクセスデータ 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 PortHandle hPort; unsigned int data; mCreatePort( &hPort ); mPortIn( hPort, 0x180, 1, &data ); mDeletePort( hPort ); 0x180から1ワード入力する。 注意 複数データの場合、アクセスデータにパックされる。 int mPortOutWord( hPort, port, size, data )  概要 ポートアクセスオブジェクトを使用しポート出力(ワード単位)を行う パラメータ PortHandle hPort : ポートアクセスオブジェクトハンドル unsigned int port : ポートアドレス int size : アクセスワード数 (1 - 2) Win95/NT (1) DOS unsigned int data : アクセスデータ 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 PortHandle hPort; mCreatePort( &hPort ); mPortOut( hPort, 0x180, 1, 0x0033 ); mDeletePort( hPort ); 0x180に1ワード出力する。 注意 複数データの場合、アクセスデータがアンパックされる。 [ 物理メモリーアクセス ] ===================================================== インクルードファイル "mMemory.h" mCreateMemory int mCreateMemory( addr, size, vp_, phMem )  概要 物理メモリーアクセスオブジェクトを生成しハンドルを返す。 パラメータ unsigned int addr : 物理メモリー先頭アドレス unsigned int size : 物理メモりーサイズ void **vp_ : アクセスマップポインター MemoryHandle *phMem : 物理メモリーアクセスオブジェクトハンドル 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 void *pmem; unsigned short data, *p; MemoryHandle hMem; mCreateMemory( 0xc0000, 4096, &pmem, &hMem ); p = (unsigned short *)pmem; data = *p; ... mDeleteMemory( hMem ); ビデオBIOS ROMの先頭4096バイトをアクセス可能にし、先頭1ワードを読み込む。 注意 PCIバス上のメモリー空間をアクセスする場合は mCreateMemoryPci()を用います。 mCreateMemoryPci int mCreateMemoryPci( busNo, addr, size, vp_, phMem )  概要 PCIバス上の物理メモリーアクセスオブジェクトを生成しハンドルを返す。 パラメータ int busNo : バスNo unsigned int addr : 物理メモリー先頭アドレス unsigned int size : 物理メモりーサイズ void **vp_ : アクセスマップポインター MemoryHandle *phMem : 物理メモリーアクセスオブジェクトハンドル 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 void *pmem; unsigned short data, *p; MemoryHandle hMem; mCreateMemoryPci( 0, 0xe3000000, 512, &mem, &hMem ); p = (unsigned short *)pmem; data = *p; ... mDeleteMemory( hMem ); mDeleteMemory int mDeleteMemory( hMemory )  概要 物理メモリーアクセスオブジェクトを削除してアクセスを終了する。 パラメータ MemoryHandle hMemory : 物理メモリーアクセスオブジェクトハンドル 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 MemoryHandle hMem; mCreateMemory( &hMem ); ... mDeleteMemory( hMem ); [ 割り込みトリガーコントロール ] ============================================= インクルードファイル "mIntTrig.h" mCreateIntTrigIsa int mCreateIntTrigIsa( irqNo, phInt )  概要 ISAバス割り込み用 割り込みトリガーコントロールオブジェクトを生成しハンドルを返す。 パラメータ unsigned int irqNo : ISAバス割り込み番号 IntTrigHandle *phInt : 割り込みトリガーコントロールオブジェクトハンドル 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 IntTrigHandle hInt; mCreateIntTrigIsa( 5, &hInt ); ... mDeleteIntTrig( hInt ); ISAバス割り込み5からのトリガーを利用可能にする mCreateIntTrigPci int mCreateIntTrigPci( busNo, irqNo, phInt )  概要 PCIバス割り込み用 割り込みトリガーコントロールオブジェクトを生成しハンドルを返す。 パラメータ int busNo : PCIバス番号 unsigned int irqNo : PCIバス割り込み番号 IntTrigHandle *phInt : 割り込みトリガーコントロールオブジェクトハンドル 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 IntTrigHandle hInt; mCreateIntTrigPci( 0, 15, &hInt ); ... mDeleteIntTrig( hInt ); PCIバス0 / 割り込み15 からのトリガーを利用可能にする mDeleteIntTrig int mDeleteIntTrig( hInt )  概要 割り込みトリガーコントロールオブジェクトを削除してアクセスを終了する。 パラメータ IntTrigHandle hInt : 割り込みトリガーコントロールオブジェクトハンドル 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 IntTrigHandle hInt; mCreateIntTrigIsa( 5, &hInt ); ... mDeleteIntTrig( hInt ); mIntTrigEnable int mIntTrigEnable( hInt )  概要 ハードウェア割り込みをイネーブル(可)にする。 パラメータ IntTrigHandle hInt : 割り込みコントロールオブジェクトハンドル 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 IntTrigHandle hInt; ... mIntTrigEnable( hInt ); ... mIntTrigDisable( hInt ); mIntTrigDisable int mIntTrigDisable( hInt )  概要 ハードウェア割り込みをディスエーブル(不可)にする。 パラメータ IntTrigHandle hInt : 割り込みコントロールオブジェクトハンドル 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 IntTrigHandle hInt; ... mIntTrigEnable( hInt ); ... mIntTrigDisable( hInt ); mIntTrigWait int mIntTrigWait( hInt, waitTime )  概要 割り込みイベントが発生するのを待つ。タイムアウトを設定することによってイベントが発生しない時に無限ループを避けることができます。 パラメータ IntTrigHandle hInt : 割り込みトリガーコントロールオブジェクト ハンドル int waitTime : タイムアウト時間( mSec ) 戻り値 ステータス正常(= 0) タイムアウト(= MIO_RET_ERR_TIME_OUT ) そのほかエラー(< 0) 使用例 int flag; IntTrigHandle hInt; mIntTrigEnable( hInt ); ... flag = mIntTrigWait( hInt, 100 ); switch ( flag ) { case 0 : { /* イベント発生*/ } break; case MIO_RET_ERR_TIME_OUT : { /* タイムアウト*/ } break; default : { /* その他エラー*/ } } ... mIntTrigGetStatus int mIntTrigGetStatus( hInt, pData, pCount )  概要 割り込み状況を割り込みステートと割り込みカウントで返す。 パラメータ IntTrigHandle hInt : 割り込みトリガーコントロールオブジェクト ハンドル unsigned int *pData : 割り込みステート ( 0 : 割り込みなし) ( 1 : 割り込み発生) ( 3 : 割り込みオーバーラン発生) unsigned int *pCount : 割り込みカウント 割り込みイネーブルにした時カウントは0 で、後は 順次割り込みごとにアップしてゆきます。 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 int flag; unsigned int dat, count; IntTrigHandle hInt; ... mIntTrigEnable( hInt ); ... mIntTrigGetStatus( hInt, &data, &count ); switch ( data ) { case 0 : { /* 割り込みなし*/ } break; case 1 : { /* 割り込み発生*/ } break; case 3 : { /* 割り込みオーバーラン発生*/ } break; } ... <注意> mIntTrigGetStatus() を呼んだあと割り込みステータスは0 に戻ります。 [ タイマートリガーコントロール ] ============================================= インクルードファイル "mTmrTrig.h" mCreateTmrTrigOneShot int mCreateTmrTrigOneShot( time, phTmr )  概要 ワンショトタイマートリガーコントロールオブジェクトを生成しハンドルを返す。 パラメータ int time : タイマー時間 (msec) TmrTrigHandle *phTmr : タイマートリガーコントロールオブジェクトハンドル 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 TmrTrigHandle hTmr; mCreateTmrTrigOneShot( 100, &hTmr ); ... mDeleteTmrTrig( hTmr ); 100msecワンショトタイマートリガーを利用可能にする mCreateTmrTrigPeriodic int mCreateTmrTrigPeriodic( time, phTmr )  概要 繰り返しタイマートリガーコントロールオブジェクトを生成しハンドルを返す。 パラメータ int time : タイマー時間 (msec) TmrTrigHandle *phTmr : タイマートリガーコントロールオブジェクトハンドル 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 TmrTrigHandle hTmr; mCreateTmrTrigPeriodic( 100, &hTmr ); ... mDeleteTmrTrig( hTmr ); 100msec繰り返しタイマートリガーを利用可能にする mDeleteTmrTrig int mDeleteTmrTrig( hTmr )  概要 タイマートリガーコントロールオブジェクトを削除してアクセスを終了する。 パラメータ TmrTrigHandle hTmr : タイマートリガーコントロールオブジェクト ハンドル 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 TmrTrigHandle hTmr; mCreateTmrTrigOneShot( 100, &hTmr ); ... mDeleteTmrTrig( hTmr ); mTmrTrigStart int mTmrTrigStart( hTmr )  概要 トリガー用タイマーをスタートさせる パラメータ TmrTrigHandle hTmr : タイマーコントロールオブジェクトハンドル 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 TmrTrigHandle hTmr; ... mTmrTrigStart( hTmr ); ... mTmrTrigStop( hTmr ); mTmrTrigStop int mTmrTrigStop( hTmr )  概要 トリガー用タイマーを停止させる パラメータ TmrTrigHandle hTmr : タイマーコントロールオブジェクトハンドル 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 TmrTrigHandle hTmr; ... mTmrTrigStart( hTmr ); ... mTmrTrigStop( hTmr ); mTmrTrigSet int mTmrTrigSet( hTmr, time )  概要 トリガー用タイマー時間を再設定する パラメータ TmrTrigHandle hTmr : タイマーコントロールオブジェクトハンドル int time : タイマー時間 (msec) 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 TmrTrigHandle hTmr; ... mTmrTrigSet( hTmr, 100 ); ... mTmrTrigWait int mTmrTrigWait( hTmr, waitTime )  概要 タイマーイベントが発生するのを待つ。タイムアウトを設定することによってイベントが発生しない時に無限ループを避けることができます。 パラメータ TmrTrigHandle hTmr : タイマートリガーコントロールオブジェクト ハンドル int waitTime : タイムアウト時間( mSec ) 戻り値 ステータス正常(= 0) タイムアウト(= MIO_RET_ERR_TIME_OUT ) そのほかエラー(< 0) 使用例 int flag; TmrTrigHandle hTmr; mTmrTrigStart( hTmr ); ... flag = mTmrTrigWait( hTmr, 100 ); switch ( flag ) { case 0 : { /* イベント発生*/ } break; case MIO_RET_ERR_TIME_OUT : { /* タイムアウト*/ } break; default : { /* その他エラー*/ } } ... mTmrTrigGetCount int mTmrTrigGetCount( hTmr, pCount )  概要 タイマーカウント値を返す。 パラメータ TmrTrigHandle hTmr : タイマートリガーコントロールオブジェクト ハンドル unsigned int *pCount : タイマーカウント タイマースタートにした時カウントは0 で、後は 順次タイマー時間経過ごとにアップしてゆきます。 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 unsigned int count; TmrTrigHandle hTmr; ... mTmrTrigStart( hTmr ); ... mTmrTrigGetCount( hTmr, &count ); [ 時間計測 ] ================================================================= インクルードファイル "mTmrCntr.h" mCreateTmrCntr int mCreateTmrCntr( phTmrCntr )  概要 タイマーカウンターオブジェクトを生成しハンドルを返す。 パラメータ TmrCntrHandle *phTmrCntr : タイマーカウンターオブジェクトハンドル 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 TmrCntrHandle hTmrCntr; mCreateTmrCntr( &hTmrCntr ); ... mDeleteTmrCntr( hTmrCntr ); mDeleteTmrCntr int mDeleteTmrCntr( hTmrCntr )  概要 タイマーカウンターオブジェクトを削除してアクセスを終了する。 パラメータ TmrCntrHandle hTmrCntr : タイマーカウンターオブジェクトハンドル 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 TmrCntrHandle hTmrCntr; mCreateTmrCntr( &hTmrCntr ); ... mDeleteTmrCntr( hTmrCntr ); mTmrCntrGetCount int mTmrCntrGetCount( hTmrCntr, pCount )  概要 タイマーカウンターオブジェクトを使用してタイムカウントを読み出す カウントの値は単調に増大していく 実際の時間に直す場合は mTmrCntrCountToUSec()を使用する パラメータ TmrCntrHandle hTmrCntr : タイマーカウンターオブジェクトハンドル unsigned int *pCount : タイムカウント 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 TmrCntrHandle hTmrCntr; unsigned int cnt; mCreateTmrCntr( &hTmrCntr ); mTmrCntrGetCount( hTmrCntr, &cnt ); mDeleteTmrCntr( hTmrCntr ); mTmrCntrCountToUSec int mTmrCntrCountToUSec( hTmrCntr, count, pUSec )  概要 タイムカウントをuSecに変換する コードの2個所でタイムカウンタをリードし、その差分からuSecオーダーの時間を求める際に使用する パラメータ TmrCntrHandle hTmrCntr : タイマーカウンターオブジェクトハンドル unsigned int count : タイムカウント unsigned int pUSec : uSec時間 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 TmrCntrHandle hTmrCntr; unsigned int cnt1, cnt2, uSec; mTmrCntrGetCount( hTmrCntr, &cnt1 ); ... mTmrCntrGetCount( hTmrCntr, &cnt2 ); mTmrCntrCountToUSec( hTmrCntr, (hcnt2-hcnt1), &uSec ); [ PCIコンフィグデータアクセス ] ============================================== インクルードファイル "mPci.h" mCreatePci int mCreatePci( phPci )  概要 PCIコンフィグデータアクセスオブジェクトを生成しハンドルを返す。 パラメータ PciHandle *phPci : PCIコンフィグデータアクセスオブジェクトハンドル 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 PciHandle hPci; mCreatePci( &hPci ); ... mDeletePci( hPci ); mDeletePci int mDeletePci( hPci )  概要 PCIコンフィグデータアクセスオブジェクトを削除してアクセスを終了する。 パラメータ PciHandle hPci : PCIコンフィグデータアクセスオブジェクトハンドル 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 PciHandle hPci; mCreatePci( &hPci ); ... mDeletePci( hPcia ); mPciFindDevice int mPciFindDevice( hPci, vendorID, deviceID, index, pBus, pDevFunc )  概要 PCIデバイスの存在するバスとデバイスファンクションデータを読み出す パラメータ PciHandle hPci : PCIコンフィグデータアクセスオブジェクトハンドル unsigned int vendorID : PCIデバイスベンダーID (2byte) unsigned int deviceID : PCIデバイスID (2byte) int index : アクセスインデックス (0-) int *pBus : バス番号 int *pDevFunc : デバイスファンクション 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 PciHandle hPci; int i, bus, devFunc; mCreatePci( &hPci ); for ( i=0; i<16; ++i ) { if ( mPciFindDevice( hPci, 0x10ec, 0x8029, i, &bus, &devFunc ) < 0 ) break; /* !!! Found Realtek 8029 Ethernet Chip !!! */ ] mDeletePci( hPcia ); mPciFindMisDevice int mPciFindMisDevice( hPci, index, pBbus, pDevFunc )  概要 存在する山下システムズカード上のデバイス情報を読み出す。 パラメータ PciHandle hPci : PCIコンフィグデータアクセスオブジェクトハンドル int index : アクセスインデックス (0-) int *pBus : バス番号 int *pDevFunc : デバイスファンクション 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 PciHandle hPci; int i, bus, devFunc; mCreatePci( &hPci ); for ( i=0; i<16; ++i ) { if ( mPciFindMisDevice( hPci,i,&bus,&devFunc ) < 0 ) break; /* !!! Found MIS Card AS-5130/5260/5270/5310... !!! */ ] mDeletePci( hPcia ); mPciReadConfigByte int mPciReadConfigByte( hPci, bus, devFunc, addr, pData )  概要 PCIデバイス上のコンフィグバイトデータをリードする パラメータ PciHandle hPci : PCIコンフィグデータアクセスオブジェクトハンドル int bus : バス番号 int devFunc : デバイスファンクション int addr : アドレスオフセット ( 0 - ) unsigned int *pData : アクセスデータ 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 PciHandle hPci; int bus, devFunc; unsigned int data; mPciFindDevice( hPci, 0x10ec, 0x8029, &bus, &devFunc ); mPciReadConfigByte( hPci, bus, devFunc, 0, &data ); mPciReadConfigWord int mPciReadConfigWord( hPci, bus, devFunc, addr, pData )  概要 PCIデバイス上のコンフィグワードデータをリードする パラメータ PciHandle hPci : PCIコンフィグデータアクセスオブジェクトハンドル int bus : バス番号 int devFunc : デバイスファンクション int addr : アドレスオフセット ( 0 - ) unsigned int *pData : アクセスデータ (2バイト) 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 PciHandle hPci; int bus, devFunc; unsigned int data; mPciFindDevice( hPci, 0x10ec, 0x8029, &bus, &devFunc ); mPciReadConfigWord( hPci, bus, devFunc, 0, &data ); mPciReadConfigLong int mPciReadConfigLong( hPci, bus, devFunc, addr, pData )  概要 PCIデバイス上のコンフィグロングデータをリードする パラメータ PciHandle hPci : PCIコンフィグデータアクセスオブジェクトハンドル int bus : バス番号 int devFunc : デバイスファンクション int addr : アドレスオフセット ( 0 - ) unsigned long *pData : アクセスデータ 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 PciHandle hPci; int bus, devFunc; unsigned long data; mPciFindDevice( hPci, 0x10ec, 0x8029, &bus, &devFunc ); mPciReadConfigLong( hPci, bus, devFunc, 0, &data ); mPciWriteConfigByte int mPciWriteConfigByte( hPci, bus, devFunc, addr, data )  概要 PCIデバイス上のコンフィグバイトデータをライトする パラメータ PciHandle hPci : PCIコンフィグデータアクセスオブジェクトハンドル int bus : バス番号 int devFunc : デバイスファンクション int addr : アドレスオフセット ( 0 - ) unsigned int data : アクセスデータ 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 PciHandle hPci; int bus, devFunc; unsigned int data; data = ... mPciFindDevice( hPci, 0x10ec, 0x8029, &bus, &devFunc ); mPciWriteConfigByte( hPci, bus, devFunc, 0, data ); mPciWriteConfigWord int mPciWriteConfigWord( hPci, bus, devFunc, addr, data )  概要 PCIデバイス上のコンフィグワードデータをライトする パラメータ PciHandle hPci : PCIコンフィグデータアクセスオブジェクトハンドル int bus : バス番号 int devFunc : デバイスファンクション int addr : アドレスオフセット ( 0 - ) unsigned int data : アクセスデータ (2バイト) 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 PciHandle hPci; int bus, devFunc; unsigned int data; data = ... mPciFindDevice( hPci, 0x10ec, 0x8029, &bus, &devFunc ); mPciWriteConfigWord( hPci, bus, devFunc, 0, data ); mPciWriteConfigLong int mPciWriteConfigLong( hPci, bus, devFunc, addr, data )  概要 PCIデバイス上のコンフィグロングデータをライトする パラメータ PciHandle hPci : PCIコンフィグデータアクセスオブジェクトハンドル int bus : バス番号 int devFunc : デバイスファンクション int addr : アドレスオフセット ( 0 - ) unsigned long data : アクセスデータ 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 PciHandle hPci; int bus, devFunc; unsigned long data; data = ... mPciFindDevice( hPci, 0x10ec, 0x8029, &bus, &devFunc ); mPciWriteConfigLong( hPci, bus, devFunc, 0, data ); mPciReadDeviceVendor mPciReadDeviceType mPciReadCardVendor mPciReadCardType mPciReadCardIrqNo int mPciReadDeviceVendor( hPci, bus, devFunc, pData ) int mPciReadDeviceType( hPci, bus, devFunc, pData ) int mPciReadCardVendor( hPci, bus, devFunc, pData ) int mPciReadCardType( hPci, bus, devFunc, pData ) int mPciReadCardIrqNo( hPci, bus, devFunc, pData )  概要 PCIデバイス上のコンフィグデータをリードする DeviceVendor - デバイスベンダーコード DeviceType - デバイスタイプコード CardVendor - カードベンダーコード CardVendor - カードタイプコード CardIrqNo - 割り当て割り込みNo パラメータ PciHandle hPci : PCIコンフィグデータアクセスオブジェクトハンドル int bus : バス番号 int devFunc : デバイスファンクション int addr : アドレスオフセット ( 0 - ) unsigned int *pData : アクセスデータ 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 PciHandle hPci; int bus, devFunc; unsigned int irqNo; mPciFindDevice( hPci, 0x10ec, 0x8029, &bus, &devFunc ); mPciReadCardIrqNo( hPci, bus, devFunc, &irqNo ); mPciReadCardAddrLow mPciReadCardAddrHigh mPciReadCardAddr int mPciReadCardAddrLow( hPci, bus, devFunc, off, pData ) int mPciReadCardAddrHigh( hPci, bus, devFunc, off, pData ) int mPciReadCardAddr( hPci, bus, devFunc, off, pData )  概要 PCIデバイス上のコンフィグデータをリードする CardAddrLow - 割り当てアドレス (下位 16bit) CardAddrHigh - 割り当てアドレス (下位 16bit) CardAddr - 割り当てアドレス (32bit) パラメータ PciHandle hPci : PCIコンフィグデータアクセスオブジェクトハンドル int bus : バス番号 int devFunc : デバイスファンクション int off : オフセット ( 0 - 5 ) unsigned int *pData : アクセスデータ (mPciReadAddrの場合は unsigned long *pData) 戻り値 ステータス正常(= 0) エラー(< 0) 使用例 PciHandle hPci; int bus, devFunc; unsigned long addr; mPciFindDevice( hPci, 0x10ec, 0x8029, &bus, &devFunc ); mPciReadCardAddr( hPci, bus, devFunc, 0, &addr ); mPci_DEVFUNC mPci_DEV mPci_FUNC mPci_DEVFUNC( dev, func )  概要 デバイスNO、ファンクションNOからデバイスファンクションを合成する。 パラメータ dev : デバイスNo 0 - 31 func : ファンクションNo 0 - 7 戻り値 デバイスファンクション mPci_DEV( devFunc )  概要 デバイスファンクションからデバイスNOを抜き出す。 パラメータ devFunc : デバイスファンクション 戻り値 デバイスNO mPci_DEV( devFunc )  概要 デバイスファンクションからファンクションNOを抜き出す。 パラメータ devFunc : デバイスファンクション 戻り値 ファンクションNO