无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 5680|回复: 16
打印 上一主题 下一主题

[已解决] 我每天都是遇到神奇的问题!

[复制链接]
跳转到指定楼层
1#
发表于 2012-6-8 18:54:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
chkpci -srs | call :get_WHID SRS
chkpci -net | call :get_WHID NET

应该是

chkpci -srs | call :get_WHID SRS=
chkpci -net | call :get_WHID NET=

长时间不些G4D批处理,忘记完了。





网卡ID  是   PCI\VEN_10DE&DEV_0760
  1. !BAT by  sratlf,hotdll@20120608
  2. checkrange 20111103:-1 read 0x8278 > nul || clear && echo -e \n Not supported grub4dos version!\n && exit
  3. map --mem=0x20000 %~f0 (rd) > nul
  4. cat --locate=\x1f\x8b --number=1 (rd)+1 > nul || exit 1
  5. calc *0x82d8=*0x82d8-%?% > nul
  6. calc *0x82d0=*0x82d0+%?% > nul
  7. map --mem (rd)+1 (hd) > nul
  8. map --rehook
  9. insmod (hd-1,0)/F6.MOD > nul || exit
  10. echo -e ;@hotdll \r \n > (hd-1,0)/DRV.INI
  11. chkpci -srs | call :get_WHID SRS
  12. chkpci -net | call :get_WHID NET
  13. echo -e ;@sratlf >> (hd-1,0)/DRV.INI

  14. :get_WHID
  15. if "%~2"=="" && exit
  16. set WID=%~2
  17. if /i "%WID:~0,7%"=="PCI\VEN" && set HID=%WID:~0,21% ! shift 2 && goto :get_WHID
  18. echo -e %1 = %HID:~8,4% = %HID%  >> (hd-1,0)/DRV.INI \r\n
  19. shift 2 && goto :get_WHID
复制代码
命令行执行完毕以上代码后:
输入: cat (hd-1,0)/drv.ini
结果:
;@hotdll
;@sratlf

但是deubg 3命令后在重复以上代码:
输入: cat (hd-1,0)/drv.ini
;@hotdll
NETPCIBIOSInt = 10DE = PCI\VEN_10DE&DEV_0760
;@sratlf


谁能告诉我为什么?

g4d版本:2012-05-22 0.4.5c

DRV7.7z (5.09 KB, 下载次数: 46)

[ 本帖最后由 hotdll 于 2012-6-8 21:23 编辑 ]
2#
发表于 2012-6-8 19:54:32 | 只看该作者
抱歉,太复杂,我还真帮不上。

如果你能够定位到一个很小的范围,发现了 bug 什么的,我可以帮助分析。
回复

使用道具 举报

3#
发表于 2012-6-8 20:14:11 | 只看该作者
把Debug3模式下的输出信息截图给我们看看,看看它都干了些什么,就知道毛病出在哪了
回复

使用道具 举报

4#
发表于 2012-6-8 20:24:51 | 只看该作者

回复 #1 hotdll 的帖子

改成这样可以正常,但不知原因:

!BAT by  sratlf,hotdll@20120608
checkrange 20111103:-1 read 0x8278 > nul || clear && echo -e \n Not supported grub4dos version!\n && exit
map --mem=0x20000 %~f0 (rd) > nul
cat --locate=\x1f\x8b --number=1 (rd)+1 > nul || exit 1
calc *0x82d8=*0x82d8-%?% > nul
calc *0x82d0=*0x82d0+%?% > nul
map --mem (rd)+1 (hd) > nul
map --rehook
insmod (hd-1,0)/F6.MOD > nul || exit
echo -e ;@hotdll \n > (hd-1,0)/DRV.INI
chkpci -srs | set a=
call :get_WHID SRS %a%
chkpci -net | set b=
call :get_WHID NET %b%
echo -e ;@sratlf >> (hd-1,0)/DRV.INI

:get_WHID
if "%~2"=="" && exit
set WID=%~2
if /i "%WID:~0,7%"=="PCI\VEN" && set HID=%WID:~0,21% ! shift 2 && goto :get_WHID
echo -e %1 = %HID:~8,4% = %HID% >> (hd-1,0)/DRV.INI \r \n
shift 2 && goto :get_WHID

[ 本帖最后由 527104427 于 2012-6-8 20:35 编辑 ]
回复

使用道具 举报

5#
 楼主| 发表于 2012-6-8 20:30:45 | 只看该作者
原帖由 527104427 于 2012-6-8 20:24 发表
改成这样可以正常,但不知原因:



你这样获取的只有一个ID...如果是多网卡和多RAID。你就没办法了
回复

使用道具 举报

6#
发表于 2012-6-8 21:14:56 | 只看该作者
原帖由 hotdll 于 2012-6-8 18:54 发表
网卡ID  是   PCI\VEN_10DE&DEV_0760!BAT by  sratlf,hotdll@20120608
checkrange 20111103:-1 read 0x8278 > nul || clear && echo -e \n Not supported grub4dos version!\n && exit
map --mem=0x20000 %~f ...

请问文件格式?有需要我重写一个
回复

使用道具 举报

7#
 楼主| 发表于 2012-6-8 21:31:46 | 只看该作者

回复 #6 2011czmxbb52 的帖子

已经解决了。
有了这个批处理。
就可以搞定win7的设备安装了。
回复

使用道具 举报

8#
发表于 2012-6-8 21:43:41 | 只看该作者
我看不太懂。以后这类问题,我就不要答复了。chenall 比较熟悉这些方面。
回复

使用道具 举报

9#
发表于 2012-6-8 21:43:50 | 只看该作者
我重写了一个:

  1. !BAT by  sratlf,hotdll@20120608,Mod By 2011czmxbb52
  2. checkrange 20111103:-1 read 0x8278 > nul || clear && echo -e \n Not supported grub4dos version!\n && exit 1
  3. map --mem=0x20000 %~f0 (rd) > nul
  4. cat --locate=\x1f\x8b --number=1 (rd)+1 > nul || exit 2
  5. calc *0x82d8=*0x82d8-%?% > nul
  6. calc *0x82d0=*0x82d0+%?% > nul
  7. map --mem (rd)+1 (hd-1,0) > nul
  8. map --rehook
  9. set /a cs=0
  10. insmod (hd-1,0)/chkpci
  11. echo -e -n ;@hotdll\r\n > (hd-1,0)/DRV.INI
  12. chkpci -srs | call :write_ID SRS
  13. chkpci -cc:0x02 | call :write_ID NET
  14. echo -e ;@sratlf >> (hd-1,0)/DRV.INI

  15. :write_ID
  16. set /a cs=%cs%+1
  17. if /i "%2"=="" exit 3
  18. set ID=%~2
  19. if /i "%ID:~0,8"=="PCI\VEN_" set /a VEN=%ID:~8,4 && echo -e -n %1%cs%:VEN:%VEN%\r\n >> (hd-1,0)/DRV.INI && echo -e -n %1%cs%:ID:%ID%\r\n%1%cs%:HID:%ID:~:13"\r\n && if /i "%ID:~0,8"=="PCI\VEN_" set /a VEN=%ID:~8,4 && echo -e -n %1%cs%:VEN:%VEN%\r\n >> (hd-1,0)/DRV.INI && echo -e -n %1%cs%:ID:%ID%\r\n%1%cs%:HID:%ID:~:13"\r\n >> (hd-1,0)/DRV.INI
  20. if /i "%ID:~0,8"=="PCI\VEN_" || shift 2 && goto :write_ID
复制代码

生成的文件格式:
;@hotdll
SRS1:VEN:xxxx
SRS1:ID:PCI\VEN_xxxx&DEV_xxxx
SRS1:HID:DEV_xxxx
NET1:VEN:xxxx
NET1:ID:PCI\VEN_xxxx&DEV_xxxx
NET1:HID:DEV_xxxx
;@sratlf

[ 本帖最后由 2011czmxbb52 于 2012-6-8 21:58 编辑 ]

DRV7MOD.zip

5.63 KB, 下载次数: 32, 下载积分: 无忧币 -2

回复

使用道具 举报

10#
 楼主| 发表于 2012-6-8 21:51:04 | 只看该作者

回复 #9 2011czmxbb52 的帖子

这样的结果不是我的要求。
因为这样的话会增加win7下判断的代码量
回复

使用道具 举报

11#
发表于 2012-6-8 21:59:02 | 只看该作者
原帖由 hotdll 于 2012-6-8 21:51 发表
这样的结果不是我的要求。
因为这样的话会增加win7下判断的代码量

算是白写了
那就留在这,当个玩具,还是删了它?

[ 本帖最后由 2011czmxbb52 于 2012-6-8 22:03 编辑 ]
回复

使用道具 举报

12#
 楼主| 发表于 2012-6-8 22:56:50 | 只看该作者

回复 #11 2011czmxbb52 的帖子

回复 #11 2011czmxbb52 的帖子
没事,就当练手
回复

使用道具 举报

13#
发表于 2012-6-9 09:50:24 | 只看该作者
试着在chkpci -srs | call :get_WHID SRS
前后临时开启debug:

debug 3
chkpci -srs | call :get_WHID SRS

debug 0


手机回复,代码没细看,只是一个想法,可以尝试
回复

使用道具 举报

14#
发表于 2012-6-9 10:35:00 | 只看该作者

回复 #13 smine 的帖子

楼主已经解决了

chkpci -srs | call :get_WHID SRS=

不加等号,所有参数都会被认为是%1
回复

使用道具 举报

15#
发表于 2012-6-9 10:50:46 | 只看该作者
原帖由 527104427 于 2012-6-9 10:35 发表 楼主已经解决了chkpci -srs | call :get_WHID SRS=不加等号,所有参数都会被认为是%1
多谢,学习了
回复

使用道具 举报

16#
发表于 2012-6-9 11:45:24 | 只看该作者
原帖由 527104427 于 2012-6-9 10:35 发表
楼主已经解决了

chkpci -srs | call :get_WHID SRS=

不加等号,所有参数都会被认为是%1



不是所有参数   是第一个参数会和SRS连在一起被认为是第一参数  

正常来说应该是 SRS为第一参数  第一个结果为第二参数  第二个结果为第三参数

不加等号或者不加空格的话  SRS和第一个结果连在一起  为第一参数  第二个结果为第二参数

当只有一个结果时  就会认为第二参数不存在  退出执行
回复

使用道具 举报

17#
发表于 2012-6-9 11:52:25 | 只看该作者

回复 #16 sratlf 的帖子

呵呵,还是S大解释得透彻,学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-23 15:32

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表