VC语言

本类阅读TOP10

·VC++ 学习笔记(二)
·用Visual C++打造IE浏览器(1)
·每个开发人员现在应该下载的十种必备工具
·教你用VC6做QQ对对碰外挂程序
·Netmsg 局域网聊天程序
·Windows消息大全
·VC++下使用ADO编写数据库程序
·VC++学习笔记(四)
·非法探取密码的原理及其防范
·怎样在VC++中访问、修改注册表

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
从VXD中调用WDM的服务 -- NUMEGA

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

从VXD中调用WDM的服务
作者:NUMEGA

Calling WDM Services from Windows 98 VxDs 
If you are developing VxDs specifically for Windows 98, you might 
occasionally need to call a WDM service from a VxD. The Windows 98 DDK 
has some limited support for doing this, although it isn't fully 
documented. 
In subdirectory lib\i386\free\win98 you'll find library wdmvxd.clb. This 
library gives you linkage to most if not all of the WDM entry points 
provided with Windows 98. Each of the object files loads registers and 
invokes INT 2Eh, which traps to a system dispatcher. Before invoking the 
called WDM service, the dispatcher takes care of ensuring that the 
stack is set up for structured exception handling, which is supported in 
WDM drivers. 
The library is set up to look like an import library, even though it 
does not result in any imports being generated. If you use DUMPBIN 
with the /linkermember switch, you'll see that the entry points are 
prefixed with __imp_. This was done so that you can use prototypes 
directly from wdm.h. 
For example, suppose you wanted to call RtlInitUnicodeString from a VxD. 
You would need this prototype from wdm.h: 
NTSYSAPI 
VOID 
NTAPI 
RtlInitUnicodeString( 
PUNICODE_STRING DestinationString, 
PCWSTR SourceString 
); 
In addition, you may need these definitions: 
#define NTSYSAPI __declspec(dllimport) 
#define NTAPI __stdcall 
Then it's simply a matter of having the typedef's and linking against 
wdmvxd.clb. 
Use wdmvxd.clb only when absolutely necessary, and always with extreme 
caution. Because IRQL is largely undefined in VxDs, there are numerous 
ways to get into trouble when making these calls. 
----------------------- 
 




相关文章

相关软件