读书人

驱动中怎么调用RtlDosPathNameToNtPat

发布时间: 2012-12-20 09:53:21 作者: rapoo

驱动中如何调用RtlDosPathNameToNtPathName_U等ntdll的未公开函数?


typedef struct _PRELATIVE_NAME{
UNICODE_STRING Name;
HANDLE CurrentDir;
} PRELATIVE_NAME, *PPRELATIVE_NAME;

typedef NTSTATUS (*DOSPATH_TO_NTPATH)(
IN PCWSTR DosPathName,
OUT PUNICODE_STRING NtPathName,
OUT PWSTR* FilePathInNtPathName OPTIONAL,
OUT PRELATIVE_NAME* RelativeName OPTIONAL
);
DOSPATH_TO_NTPATH RtlDosPathNameToNtPathName_U;

UNICODE_STRING ustrNtName = {0};
WCHAR szDosName[MAX_PATH] = L"C:\\test\\hello.exe";

if (RtlDosPathNameToNtPathName_U(szDosName,&ustrNtName,NULL,NULL))
{
KdPrint(("%s: [%s] RtlDosPathNameToNtPathName_U Success \n",__MYNAME__,__FUNCTION__));
}
else
{
KdPrint(("%s: [%s] RtlDosPathNameToNtPathName_U Failed \n",__MYNAME__,__FUNCTION__));
}



直接蓝了

还有一个问题
驱动中调用Zw*等函数到底是ntdll.dll导出的,还是ntoskrnl.exe导出的?
[最优解释]
MmGetSystemRoutineAddress
[其他解释]
DOSPATH_TO_NTPATH RtlDosPathNameToNtPathName_U;

一个函数指针,没有得到正确地址,就调用了。
[其他解释]
除了这个函数,还有什么方法可以在内核将DOS路径解析成NT路径
[其他解释]


没人知道吗?难道要插APC
[其他解释]
该回复于2012-02-28 13:38:10被版主删除

读书人网 >VC/MFC

热点推荐