根据 MSDN 文档,RtlStringCbCopy 安全字符串函数应该是这样的:
NTSTATUS RtlStringCbCopy(
__out LPTSTR pszDest,
__in size_t cbDest,
__in LPCTSTR pszSrc)
但是当我编译我的代码时,ddk 说:
1>c:\work\mydevdrv\loopback\driver.cpp(421):错误 C2664:“RtlStringCbCopyW”:无法将参数 1 从“LPTSTR”转换为“NTSTRSAFE_PWSTR”链接可执行文件 - i386\loopback.sys 1>链接:错误LNK1181:无法打开输入文件 'c:\work\mydevdrv\loopback\objchk _wxp_x86\i386\driver.obj' 构建:完成时间:2011 年 4 月 19 日星期二 20:21:51
似乎它期望第一个参数的类型是 NTSTRSAFE_PWSTR 而不是 LPTSTR。但是这种 NTSTRSAFE_PWSTR 类型从未在 MSDN 文档中提及。那么我应该使用哪种类型?
我对这个函数的调用是这样的:
RtlStringCbCopyW((LPTSTR)pIrp->UserBuffer, 1024 ,L"return value from driver");