⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pcifunc.txt

📁 访问32位PCI总线BIOS的例程
💻 TXT
字号:
PCI BIOSコールライブラリ(PCIFUNC) 関数一覧


●PCIバス情報取得関数群
▲_pciGetSts()
	PCIバス関連情報の取得
引き数	コンフィグレーションメカニズムバージョン変数ポインタ(unsigned char *型),
	PCIバスバージョン変数ポインタ(unsigned int *型),
	最大PCIバス番号変数ポインタ(unsigned char *型),
	PCI BIOSシグネチャ変数ポインタ(unsigned long int *型)
戻り値	unsigned int型   0:正常終了  0以外:エラー

備考	戻り値が0以外だった場合、PCI BIOSおよびPCIバスがないと判断する.
	正常終了時に各変数に格納される値
	・コンフィグレーションメカニズムバージョン
		_pciConfigVersion()の戻り値の下位8ビットと同様
	・PCIバスバージョン
		_pciBusVersion()の戻り値と同様
	・最大PCIバス番号
		_pciMaxBusNo()の戻り値と同様
	・PCI BIOSシグネチャ
		_pciSigPCI()の戻り値と同様


▲_pciConfigVersion()
	コンフィグレーションメカニズムバージョンほかの情報取得
引き数	なし
戻り値	unsigned int型
	ビット15~8 0:正常終了  0以外:エラー
	ビット7~6 予約(0)
	ビット5   1:スペシャルサイクルはコンフィグレーションメカニズム2でサポート
	          0:未サポート
	ビット4   1:スペシャルサイクルはコンフィグレーションメカニズム1でサポート
	          0:未サポート
	ビット3~2 予約(0)
	ビット1   1:コンフィグレーションメカニズム2をサポート
	          0:未サポート
	ビット0   1:コンフィグレーションメカニズム1をサポート
	          0:未サポート
備考	戻り値の上位8ビットが0以外だった場合、PCI BIOSおよびPCIバスがないと判断


▲_pciBusVersion()
	PCIバスバージョンの取得
引き数	なし
戻り値	unsigned int型
	ビット15~8  メジャーバージョン(BCD形式)
	ビット7~0   マイナーバージョン(BCD形式)
備考	PCIバス バージョン2.1のときの戻り値は 0x0210


▲_pciMaxBusNo()
	最大PCIバス番号の取得
引き数	なし
戻り値	最大PCIバス番号(unsigned char型)
備考	PCIバスが1本しかない場合は0.AGPバスもPCIバスとして数える


▲_pciSigPCI()
	PCI BIOSシグネチャの取得
引き数	なし
戻り値	unsigned long int型
		0x0x20494350(' PCI')  シグネチャ文字列あり
		上記数値以外          シグネチャ文字列なし
備考	シグネチャ文字列がない場合、PCI BIOSおよびPCIバスがないと判断


▲_pciGetIrqRoute()
	IRQルーティングテーブル情報の取得
引き数	unsigned int型,unsigned char far *型
戻り値	unsigned long int型
備考	PnP OS用ファンクション(詳細は省略)


※コメント:
 _pciConfigVersion()/_pciBusVersion()/_pciMaxBusNo()/_pciSigPCI()関数でそれぞれの情報を独立して取得するか、_pciGetSts()関数で一度に取得するかの違い。どちらの関数を使っても取得できる情報は同じ。
 _pciGetIrqRoute()はプラグ&プレイ対応OS用のエントリ。使用するにはシステムに関する深い知識が必要なため、ここでは説明しない(下手に触らないほうがよい)。



●PCIデバイス検索関数群
▲_pciFindPciDevice()
	ベンダID&デバイスIDによるPCIデバイス検索
引き数	デバイスID(unsigned int型),ベンダID(unsigned int型),インデックス(unsigned int型)
戻り値	PCIデバイスアドレス(unsigned long int型)
	ビット7~0  エラーコード
		0:正常終了
		0x86:デバイスが存在しない
		0x83:ベンダIDが正しくない(0xFFFFの場合)
	ビット15~8  予約
	ビット31~24 PCIバス番号(正常終了時)
	ビット23~19 デバイス番号(正常終了時)
	ビット18~16 ファンクション番号(正常終了時)
備考	インデックスの値が0のとき、PCIバスを検索して最初に見つかった目的のデバイスのPCIデバイスアドレス(バス番号/デバイス番号/ファンクション番号)を返す。同じベンダID/デバイスIDをもったPCIデバイスが複数実装されているか、2枚目以降のデバイスを探すときはインデックスを1にする。以降同様。


▲_pciFindPciClass()
	クラスコードによるPCIデバイス検索
引き数	基本クラス(unsigned char型),サブクラス(unsigned char型),プログラムI/F(unsigned char型),インデックス(unsigned int型)
戻り値	PCIデバイスアドレス(unsigned long int型)
	ビット7~0  エラーコード
		0:正常終了
		0x86:デバイスが存在しない
		0x83:クラスコードが正しくない
	ビット15~8  予約
	ビット31~24 PCIバス番号(正常終了時)
	ビット23~19 デバイス番号(正常終了時)
	ビット18~16 ファンクション番号(正常終了時)
備考	インデックスの使い方はpciFindPciDevice()と同様


●コンフィグレーションレジスタ読み出し関数群
▲_pciConfigReadByte()
	コンフィグレーションレジスタ バイト(8ビット)読み出し
引き数	PCIデバイスアドレス(unsigned int型),レジスタアドレス(unsigned int型)
戻り値	読み出しデータ(unsigned char型)
備考	PCIデバイスアドレスは、_pciFindPciDevice()や_pciFindPciClass()の戻り値と同じフォーマット.以下のコンフィグレーションレジスタ読み出し関数もすべて同様

▲_pciConfigReadWord()
	コンフィグレーションレジスタ ワード(16ビット)読み出し
引き数	PCIデバイスアドレス(unsigned int型),レジスタアドレス(unsigned int型)
戻り値	読み出しデータ(unsigned int型)
備考	レジスタアドレスは偶数アドレスのみ指定

▲_pciConfigReadLong()
	コンフィグレーションレジスタ ダブルワード(32ビット)読み出し
引き数	PCIデバイスアドレス(unsigned int型),レジスタアドレス(unsigned int型)
戻り値	読み出しデータ(unsigned long int型)
備考	レジスタアドレスは4バイト境界アドレスのみ指定



●コンフィグレーションレジスタ書き込み関数群
▲_pciConfigWriteByte()
	コンフィグレーションレジスタ バイト(8ビット)書き込み
引き数	PCIデバイスアドレス(unsigned int型),レジスタアドレス(unsigned int型),書き込みデータ(unsigned char型)
備考	PCIデバイスアドレスは、_pciFindPciDevice()や_pciFindPciClass()の戻り値と同じフォーマット.以下のコンフィグレーションレジスタ書き込み関数もすべて同様

▲_pciConfigWriteWord()
	コンフィグレーションレジスタ ワード(16ビット)書き込み
引き数	PCIデバイスアドレス(unsigned int型),レジスタアドレス(unsigned int型),書き込みデータ(unsigned int型)
戻り値	なし
備考	レジスタアドレスは偶数アドレスのみ指定

▲_pciConfigWriteLong()
	コンフィグレーションレジスタ ダブルワード(32ビット)書き込み
引き数	PCIデバイスアドレス(unsigned int型),レジスタアドレス(unsigned int型),書き込みデータ(unsigned long int型)
戻り値	なし
備考	レジスタアドレスは4バイト境界アドレスのみ指定



●PCIデバイスアドレス変換関数群 define定義
▲pciBusDevFunc
	バス番号/デバイス番号/ファンクション番号 → PCIデバイスアドレス変換
引き数	PCIバス番号(0~255),デバイス番号(0~31),ファンクション番号(0~7)
戻り値	PCIデバイスアドレス(unsigned int型)
備考	PCIデバイスアドレスは、_pciFindPciDevice()や_pciFindPciClass()の戻り値と同じフォーマット.以下同様

▲pciGetBus()
	PCIデバイスアドレス → PCIバス番号取得
引き数	PCIデバイスアドレス(unsigned int型)
戻り値	PCIバス番号(0~255)

▲pciGetDev()
	PCIデバイスアドレス → デバイス番号取得
引き数	PCIデバイスアドレス(unsigned int型)
戻り値	デバイス番号(0~31)

▲pciGetFunc()
	PCIデバイスアドレス → ファンクション番号取得
引き数	PCIデバイスアドレス(unsigned int型)
戻り値	ファンクション番号(0~7)



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -