在驱动编程中,处理字符串最好用UNICODE_STRING,UNICODE_STRING是一个结构,查看MSDN如下:

typedef struct _UNICODE_STRING{

USHORT length;\\字符串的长度

USHORT MaxnumLength;\\整个缓冲区的最大长度

PWSTR Buffer;\\缓冲

}UNICODE_STRING *PUNICODE_STRING;

字符串不是以00结尾,而是用一个结构来指定字符串的长度。

DDK提供了一个函数用于初始化字符串

VOID RtlInitUnicodeString(

IN OUT PUNICODE_STRING DestiantionString,//定义的字符串结构指针

IN PCWSTR SourceString//字符串

);

阅读全文

, , , , ,

编译环境用xp下VC6+DDK

新建一个文件夹当作工程目录,路径是E:\lingdux\

从别的工程copy过来两个文件,

一个是makefile,它用来指定文件之间的依赖关系,确定项目中哪些文件时需要重新编译的,那些事已经编译过的。里面的内容不用改,直接默认就OK

另一个是source,它用来保存一些配置信息,内容如下:

TARGETNAME=lingdux  这句用来指定目标程序存放的路径

TARGETTYPE=DRIVER 这句是指定目标类型,DRIVER为驱动程序

TARGETPATH=Driver 这句指定编译时的中间文件存放的路径

SOURCES=lingdux.c  这句指定了源文件

在工程目录想创建一个空文件命名lingdux.c,双击用VC6打开,开始写代码~!

遵循C语言,只有一个入口函数DriverEntry,有两个参数

NTSTATUS Driver Entry(IN PDRIVER_OBJECT DriverObject, 第一个是PDRIVER_OBJECT类型 系统进程调用的驱动对象
                            IN OUNICODE_STRING RegistryPath)  第二个是IN OUNICODE_STRING类型  字符串类型,注册路径

返回值类型为NTSTATUS,系统状态。

输出函数为DbgPrint(),包含的头文件是ntddk.h 

阅读全文

, , , ,