- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
winio驱动vc.txt
winio功能:操作IO端口,强制键盘记录和强制按键(非RING3用户层编程)是Ring层编程。5 b( T: d, r: p% o??h过NP保护--学习驱动编程开发,必备参考资料!% f7 g$ w, m2 ~8 [+ I驱动方便的资料比较少,大家好好珍惜这方面的资料。+ b v4 `! v K9 b G. `. ~2 p( A) v8 c6 i2 l【工作原理】如下:* d) E1 s* q9 {? ?? ?WinIO程序库允许在32位的Windows应用程序中直接对I/O端口和物理内存进行读写操作。通过使用一种内核模式的设备驱动器和其它几种底层编程技巧,它绕过了Windows系统的保护机制。6 U, F??@3 [) H5 y, m/ M3 d) ~. z??x-------------------------------------------------------------------------------------- s??t% k??P6 M0 X【WINiO里面的函数库调用】解说如下:) ]7 \) Z1 T4 p3 c? ?? ?该函数库提供8个函数功能调用: ( g6 R??l( [/ x, w% z b5 e# l) G4 {/ B z j bool _stdcall InitializeWinIo(); 1 n X- |??M# I7 X# f5 ?( h. I; Z 本函数初始化WioIO函数库。 # Z `% h, J0 j3 h2 O8 ] A% @# y8 e: }6 r9 W! s; j8 Z 必须在调用所有其它功能函数之前调用本函数。 ??u. n9 [3 w3 k k3 V% u. U, e% _ H- z2 K# K- n( ] 如果函数调用成功,返回值为非零值。 : d; D3 g# [1 I5 V# k0 b4 f8 O ^ 如果调用失败,则返回值为0。 ??w. J) A2 @! H, t1 K6 w) x3 L9 S% X void _stdcall ShutdownWinIo(); 7 s0 O: L E; W; `4 q- V! U L* A* F4 p( M) ] 本函数在内存中清除WinIO库 : P( P) o [0 E K a6 M2 \ [ A8 A 本函数必须在中止应用函数之前或者不再需要WinIO库时调用, 2 [, X. O7 ^; ~$ d( ]% k$ E @$ O8 G5 M/ ~6 M$ c bool _stdcall GetPortVal(WORD wPortAddr, PDWORD pdwPortVal, BYTE bSize); # l n/ \3 ? |; N; I Z) _; m: [0 I2 h! E( ]! q 使用此函数从一个输入或输出端口读取一个字节/字/双字数据。 2 A* r$ \; {6 G9 X0 C# c+ J d) |5 u3 z9 [2 e. N# R$ L2 F; R* C2 R 参数: $ y) w8 U??Z) n* W# Q5 D/ y; R% {/ k h2 F* M0 N wPortAddr – 输入输出端口地址 1 b7 O+ P! v A E??v2 r R k5 D- l pdwPortVal – 指向双字变量的指针,接收从端口得到的数据。 2 j# d6 r??W6 m u8 \7 [1 C. @- H9 w) w: y; ], l! v bSize – 需要读的字节数,可以是1 (BYTE), 2 (WORD) or 4 (DWORD). l% ~, ?4 Z% `1 X, Q* E `# W3 a# [??U% T2 z$ S3 `/ | K+ W 如果调用成功,则返回非零值。 0 p B n2 ~( g; h2 l4 a4 z- O+ c??O j9 q+ M2 ^+ E: b 如果函数调用失败,则函数返回值为零。 5 _1 q, h P% k: ], c* K. i2 E, W. ~( l bool _stdcall SetPortVal(WORD wPortAddr, DWORD dwPortVal, BYTE bSize); ) C1 V7 X1 j/ w# n G6 o7 O9 U$ r6 J9 f??d3 |* e9 O) j: u( F 使用本函数将一个字节/字/双字的数据写入输入或输出接口。 : i C) R% j7 u C2 ]5 ]/ F% G: z8 l9 a 参数: 0 n5 a8 q( j p# ]# V+ c6 R: J.
文档评论(0)