hanz_200 发表于 2010-9-13 12:37:25

DLLSTATUS getdllstatus(void) 如何转换成AU3?

DLLSTATUS getdllstatus(void) 如何转换成AU3?

pusofalse 发表于 2010-9-13 18:54:15


$iDllStatus = DllCall("SomeDll.dll", "dword", "getdllstatus")
MsgBox(0, "Result:", $iDllStatus)

hanz_200 发表于 2010-9-13 19:21:11

DLL文件如下:
我用:
$DLLStatus = DllCall($DLLFiles, "dward", "getdllstatus")

根本无返回值.{:face (52):}

函数说明: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の機能は使用できない。

hanz_200 发表于 2010-9-13 19:23:18

具体的其他函数在:http://www.otto.to/~kasiwano/toppage11.htm

也无法调用~~

hanz_200 发表于 2010-9-13 19:27:49

本帖最后由 hanz_200 于 2010-9-13 19:30 编辑

比如说这个函数:
ULONG _pciFindPciClass(UCHAR baseclass, UCHAR subclass, UCHAR programif, ULONG index)
无法得到返回值
$gAddress=$Address=DllCall($DLLFiles, "ulong", "_pciFindPciClass", "uchar", 0x06, "uchar", 0x00, "uchar", 0x00,"ulong",0)
$Data = DllCall($DLLFiles, "ulong", "_pciConfigReadLong", "ulong", BitShift($Address,16), "ulong", 0)
$NorthVendorID=$Data&0x0000FFFF
求P大帮忙 ~~

pusofalse 发表于 2010-9-13 19:42:13

把uchar改成ubyte,AU3中没有uchar。另外DllCall函数返回的是数组。
$gAddress=$Address=DllCall(...) 这句什么意思?之前声明$Address变量了吗?没有的话直接出错退出,有声明的话,$gAddress永远都是False,除非DllCall出错。

hanz_200 发表于 2010-9-13 20:17:29

本帖最后由 hanz_200 于 2010-9-16 13:43 编辑

谢谢P大的帮助~

hanz_200 发表于 2010-9-14 13:24:22

本帖最后由 hanz_200 于 2010-9-14 13:27 编辑

这个如何转换成AU3:#define pciBusDevFunc(Bus,Dev,Func)                ((Bus&0xff)<<8)|((Dev&0x1f)<<3)|(Func&7)这样对吗?Func PciBusDevFunc($Bus,$Dev,$Func)
        Return BitOR(BitShift($Bus&0xFF,-8),BitShift($Dev&0x1F,-3),$Func&7)
EndFunc

pusofalse 发表于 2010-9-14 14:42:51

楼主兄在7#的回复,基本让我觉得我在2#和6#的回复完全是在浪费时间,当然这个回复也是。
无法得到结果?怎么得不到啊?你的测试代码呢?你的测试环境?你只有一句“无法得到结果”,完全会让回答者觉得你是一个loser,真的。

hanz_200 发表于 2010-9-16 13:21:19

这是个C源码:
gAddress=address = _pciFindPciClass(0x06,0x00,0x00,0);
data = _pciConfigReadLong(address >> 16 ,0);
NorthVendorID = data & 0x0000FFFF;
NorthDeviceID = (data & 0xFFFF0000) >> 16;
这个是转换之后的代码:
$DLLFiles=DllOpen("pcidebug.dll")
Dim $Address,$Data
$gAddress=DllCall($DLLFiles, "ulong", "_pciFindPciClass", "ubyte", 0x06, "ubyte", 0x00, "ubyte", 0x00,"ulong",0)
$Address=$gAddress
$Data = DllCall($DLLFiles, "ulong", "_pciConfigReadLong", "ulong", BitShift($Address,16), "ulong", 0)
$NorthVendorID=BitAND($Data,0x0000FFFF)
$NorthDeviceID=BitShift($Data&0xFFFF0000,16)
一直都无法得到正确的值,请教P大,麻烦了,菜鸟晕啊~
页: [1]
查看完整版本: DLLSTATUS getdllstatus(void) 如何转换成AU3?