#include <ntddk.h>
#include <wdm.h>
#define DEVICE_NAME L"\\Device\\MyDevice"
//卸载派遣函数
void DriverUnload(PDRIVER_OBJECT pdriver)
{
NTSTATUS status = STATUS_SUCCESS;
DbgPrint("Driver Unload!");
return status;
}
//驱动加载入口
NTSTATUS DriverEntry(PDRIVER_OBJECT pdriver, PUNICODE_STRING path)
{
DbgPrint("Hello Driver!!");
//使用宏进行初始化字符串 但是由该初始化的字符串不能被修改 应用场景局限
//UNICODE_STRING name = RTL_CONSTANT_STRING(DEVICE_NAME);
UNICODE_STRING deviceName = {0};
//PWCHAR testbuffer = ExAllocatePool(NonPagedPool,0x1000);
PCHAR tempBuffer = "123\456\789\0";
STRING str = {0};
//多字节转换宽字节 多字节不支持中文
RtlInitAnsiString(&str,tempBuffer);
RtlAnsiStringToUnicodeString(&deviceName,&str,TRUE);
//宽字节字符的拷贝
UNICODE_STRING copyUnicode = {0};
//字符拷贝必须初始化以下变量 否则无法初始化
copyUnicode.Buffer = ExAllocatePool(NonPagedPool,0x1000);
copyUnicode.MaximumLength = 0x1000;
//更为安全的字符串拷贝
PWCHAR tempBuffer2 =
WDK驱动开发之路——字符串操作
最新推荐文章于 2024-01-11 23:18:45 发布