関数一覧

概要説明
ダウンロード
使い方
関数一覧
もっと知りたい

DLLの状態判定

DLLSTATUS getdllstatus(void)
戻り値
pcidebug.dllの動作状態
DLLSTATUS_NOERROR 正常動作中,
DLLSTATUS_DRIVERNOTLOADED デバイスドラーバ-がロードできなかったため動作していない状態。
DLLSTATUS_NOTSUPPORTEDPLATFORM サポートされてないプラットフォームで実行されている。動作していない状態。x86 Windows NT,Windows95/98以外のOSだとこのエラーを返す
DLLSTATUS_OTHERERROR その他何らかのエラーにより正常に動作していない
引数
なし
機能
pcidebug.dllの状態を調べる。pcidebug.dllの関数を利用する前に一度この関数を呼び出してDLLSTATUS_NOERRORであることを確認する。DLLSTATUS_NOERROR以外の状態の場合はpcidebug.dllの機能は使用できない。

PCIバス状態取得関数

UCHAR _pciBusNumber(void)
戻り値
PCIバスの数を返す。AGPバスもPCIバスとして数えられる。
引数
なし
機能
システムに存在するPCIバスの数を調べるのに使用する。0からこの関数の戻り値-1のバス番号が存在する。PCIバスが無い場合は0を返す。

PCIデバイス検索関数

ULONG _pciFindPciDevice(ULONG vender_id,ULONG device_id,ULONG index)
戻り値
PCIデバイスアドレス
ビット7〜0  エラーコード
0:正常終了
0x86:デバイスが存在しない
0x83:ベンダIDが正しくない(0xFFFFの場合)
ビット15〜8  予約
ビット31〜24 PCIバス番号(正常終了時)
ビット23〜19 デバイス番号(正常終了時)
ビット18〜16 ファンクション番号(正常終了時)
引数
vender_id ベンダID
device_id デバイスID
index インデックス値。
機能
ベンダIDとデバイスIDにの値が指定したものと一致するPCIデバイスを検索しそのアドレスを返す。
インデックス値は同じベンダID,デバイスIDをもつデバイスが複数存在する時のそうち何枚目を探すかを指定する値である。N枚目のカードを探したい場合n-1とする。最初の一枚のを探す場合は0である。
ULONG _pciFindPciClass(UCHAR baseclass, UCHAR subclass, UCHAR programif, ULONG index)
戻り値
PCIデバイスアドレス
ビット7〜0  エラーコード
0:正常終了
0x86:デバイスが存在しない
0x83:クラスコードが正しくない(現在バージョンではこれを返す事はない)
ビット15〜8  予約
ビット31〜24 PCIバス番号(正常終了時)
ビット23〜19 デバイス番号(正常終了時)
ビット18〜16 ファンクション番号(正常終了時)
引数
baseclass 基本クラス
subclass サブクラス
programif プログラムI/F
index インデックス値。
機能
基本クラス, サブクラスとベンダIDとプログラムI/Fの値が指定したものと一致するPCIデバイスを検索しそのアドレスを返す
インデックス値は_pciFindPciDeviceと同様。

コンフィグレーションレジスターアクセス関数

ULONG _pciConfigReadLong(ULONG pci_address,ULONG reg_address)
USHORT _pciConfigReadShort(ULONG pci_address,ULONG reg_address)
UCHAR _pciConfigReadChar(ULONG pci_address,ULONG reg_address)
戻り値
読み出したデータ値。正常に読み出せなかった場合、全てのビットが1の値を返す
引数
pci_address PCIデバイスアドレス
ビット31〜16 未使用
ビット15〜8 PCIバス番号
ビット7〜3 デバイス番号
ビット2〜0 ファンクション番号
reg_address 読み出すコンフィグレーションアドレス(0〜255)
機能
pci_addressで指定したPCIデバイスのコンフィグレーション空間から読み出しを行う。
_pciConfigReadLongは32bit幅で読み出す。
_pciConfigReadShortは16bit幅で読み出す。
_pciConfigReadCharは8bit幅で読み出す。
void _pciConfigWriteLong(ULONG pci_address,ULONG reg_address, ULONG data)
void _pciConfigWriteShort(ULONG pci_address,ULONG reg_address,USHORT data)
void _pciConfigWriteChar(ULONG pci_address,ULONG reg_address,UCHAR data)
戻り値
なし
引数
pci_address PCIデバイスアドレス
ビット31〜16 未使用
ビット15〜8 PCIバス番号
ビット7〜3 デバイス番号
ビット2〜0 ファンクション番号
reg_address 書き込むコンフィグレーションアドレス(0〜255)
data 書き込む値
機能
pci_addressで指定したPCIデバイスのコンフィグレーション空間に値を書きこむ。
_pciConfigWriteLongは32bit幅で書きこむ。
_pciConfigWriteShortは16bit幅で書きこむ。
_pciConfigWriteCharは8bit幅で書きこむ。

メモリーアクセス関数

ULONG _MemReadBlockLong(ULONG address, UCHAR* data, ULONG count)
ULONG _MemReadBlockShort(ULONG address, UCHAR* data, ULONG count)
ULONG _MemReadBlockChar(ULONG address, UCHAR* data, ULONG count)
戻り値
読み出しワード数
引数
address 読み出す物理アドレス
data 読み出しデータを格納するバッファへのポインター
count 読み出しワード数
機能
物理アドレスaddressからcount ワードをdataの示すメモリーに読み出す。
_MemReadBlockLongでは32bit単位に書きこみを行う。Countのワード数は4byteの転送を1とする
_MemReadBlockShortでは16bit単位に書きこみを行う。countのワード数は2byteの転送を1とする
_MemReadBlockCharでは8bit単位に書きこみを行う。countのワード数は1byteの転送を1とする
戻り値のワード単位も、それぞれ4,2,1byteである
ULONG _MemWriteBlockLong(ULONG address, UCHAR* data, ULONG count)
ULONG _MemWriteBlockShort(ULONG address, UCHAR* data, ULONG count)
ULONG _MemWriteBlockChar(ULONG address, UCHAR* data, ULONG count)
戻り値
書きこみワード数
引数
address 読み出す物理アドレス
data 書きこみデータをが格納されているバッファへのポインター
count 書きこみワード数
機能
dataの示すメモリーの値を、物理アドレスaddressへcount ワード書きこむ。
_MemWriteBlockLongでは32bit単位に書きこみを行うcountは4byteの転送を1とする
_MemWriteBlockShortでは16bit単位に書きこみを行うcountは2byteの転送を1とする
_MemWriteBlockCharでは8bit単位に書きこみを行うcountは1byteの転送を1とする
戻り値のワード単位も、それぞれ4,2,1byteである
ULONG _MemReadLong(ULONG address)
USHORT _MemReadShort(ULONG address)
UCHAR _MemReadChar(ULONG address)
戻り値
読み出しデータ
引数
address 読み出す物理アドレス
機能
物理アドレスaddressの値を読み出す。
_MemReadLongは32bitで読み出す
_MemReadShortは16bitで読み出す
_MemReadChar は8bitで読み出す
void _MemWriteLong(ULONG address, ULONG data)
void _MemWriteShort(ULONG address, USHORT data)
void _MemWriteChar(ULONG address, UCHAR data)
戻り値
なし
引数
address 書きこむ物理アドレス
data 書きこむ値
機能
物理アドレスaddressへdataの値を書きこむ。
_MemWriteLongは32bitで書きこむ
_MemWriteShortは16bitで書きこむ
_MemWriteCharは8bitで書きこむ

I/Oアクセス関数

ULONG _IoReadLong(ULONG address)
USHORT _IoReadShort(ULONG address)
UCHAR _IoReadChar(ULONG address)
戻り値
読み出した値
引数
address 読み出すI/Oポートアドレス
機能
I/Oポートアドレスaddressから読み出す。
_IoReadLongは32bitで読み出す
_IoReadShortは16bitで読み出す
_IoReadCharは8bitで読み出す
void _IoWriteLong(ULONG address, ULONG data)
void _IoWriteShort(ULONG address, USHORT data)
void _IoWriteChar(ULONG address, UCHAR data)
戻り値
なし
引数
address 書きこむI/Oポートアドレス
data 書きこむ値
機能
I/Oポートアドレスaddressへdataの値を書きこむ。
_IoWriteLongは32bitで書きこむ
_IoWriteShortは16bitで書きこむ
_IoWriteCharは8bitで書きこむ

割り込み関連関数

int _hookIRQ_NT(INTERFACE_TYPE type,
ULONG busnumber,
ULONG level,
KINTERRUPT_MODE InterruptMode,
void (WINAPI *isr)(void) )
戻り値
0 正常終了
0以外 hook失敗
引数
type バスの種類。PCIデバイスの場合PCIBusとする。その他のバスについては、pcidef.hに定義されたINTERFACE_TYPE参照
busnumber PCIデバイスのバス番号
level 割り込みの番号。PCIデバイスの場合コンフィグレーションレジスターの0x3Cの値
InterruptMode LevelSensitive:レベルセンシティブの場合
Latched:エッジセンシティブの場合
PCIバスの場合LevelSensitiveとする
Isr 割り込み発生時に呼び出す関数へのポインター。
この関数は、void WINAPI isr_func(void)の型で定義されていること。
すでに割り込みハンドラーが登録されている場合、以前のものが取り消され、新しく登録される。NULLを指定した場合、以前のハンドラーの取り消しのみ行う。IsrがNULLの場合type,busnumber,level, InterruptMode引数は無視される。
機能
割り込みハンドラーを登録する。
割り込みコントローラがバスの種類、バスの番号によらず割り込み番号だけで判定している場合Type、busnumber,InterruptModeは正しくなくても動作する。
95/98の場合はlevel,Isr引数のみが有効である。他の引数は無視される。
int _hookIRQ(ULONG level, void (*isr)(void))
戻り値
0 正常終了
0以外 hook失敗
引数
level 割り込みの番号。PCIデバイスの場合コンフィグレーションレジスターの0x3Cの値
Isr 割り込み発生時に呼び出す関数へのポインター。
この関数は、void WINAPI isr_func(void)の型で定義されていること。
すでに割り込みハンドラーが登録されている場合、以前のものが取り消され、新しく登録される。NULLを指定した場合、以前のハンドラーの取り消しのみ行う。
機能
割り込みハンドラーを登録する。
_hookIRQ_NT(PCIBus, 0, level, LevelSensitive, isr)と同じ働き。DOS版デバックライブラリとの互換性のある引数をもつ。
Int _freeIRQ(ULONG levelold)
戻り値
0 正常終了
0以外 失敗
引数
levelold 互換性のためにあるだけ。値に意味はない
機能
登録されている割り込みハンドラーを取り消す
_hookIRQ_NT(PCIBus, 0, 0, LevelSensitive, NULL)と同じ働き。
DOS版デバックライブラリとの互換性のある引数をもつ。