折腾了一天,请问这错在哪了,请高手指请,谢谢

仗剑骑驴 2010-11-15 06:36:52
typedef struct _UNICODE_STRING{
USHORT Length;
USHORT MaximumLength;
PWSTR BufferName;
}UNICODE_STRING,*PUNICODE_STRING;

typedef struct __OBJECT_TYPE_INFORMATION {
UNICODE_STRING TypeName;
ULONG Reserved [22]; // reserved for internal use
} OBJECT_TYPE_INFORMATION, OBJECT_TYPE_INFORMATION;

OBJECT_TYPE_INFORMATION ObjBasic;

typedef NTSTATUS (NTAPI *NtQUERYOBJECT) ( HANDLE ObjectHandle, ULONG ObjectInformation,OBJECT_TYPE_INFORMATION ObjectInformationClass, ULONG Length, PULONG ResultLength);
NtQUERYOBJECT NtQueryObject=NULL;

HANDLE ReadDup;
PULONG Leng=NULL;
HMODULE hNtdll = NULL;
hNtdll = LoadLibrary("ntdll.dll");
NtQueryObject=(NtQUERYOBJECT)GetProcAddress(hNtdll, "NtQueryObject");
DuplicateHandle(GetCurrentProcess(),GetCurrentProcess(),GetCurrentProcess(),&ReadDup,0,FALSE,DUPLICATE_SAME_ACCESS);
NtQueryObject(ReadDup,1,ObjBasic,sizeof(OBJECT_TYPE_INFORMATION),Leng);
FreeLibrary(hNtdll);

ObjBasic.TypeName.BufferName明明是宽字符型,编译器却说是unsigned short*
DuplicateHandle得出的句柄都是些当前进程没有的,不知道从哪产生的,NtQueryObject执行后ObjBasic.TypeName.BufferName取出的值是0,,这是为什么,知道的朋友帮忙回答一下,万分感谢,留十几分下载用,一共就只有20分了,穷了点,也是一份心意哈:)
...全文
180 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
仗剑骑驴 2010-11-17
  • 打赏
  • 举报
回复
已经搞定了,用了WideCharToMultiByte这个函数,转成了ANSI,谢谢你们的帮忙
cheng_fengming 2010-11-15
  • 打赏
  • 举报
回复
在ObjBasic.TypeName.BufferName前面加个wchar_t强转一下看看还有错误没?
(wchar_t)ObjBasic.TypeName.BufferName
赵4老师 2010-11-15
  • 打赏
  • 举报
回复
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编不就啥都明白了吗。
(Linux或Unix下应该也可以在用GDB调试时,看每句C对应的汇编。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
mtj520 2010-11-15
  • 打赏
  • 举报
回复
宽字符型,就是unsigned short

wchar_t 就是 unsigned short
dubiousway 2010-11-15
  • 打赏
  • 举报
回复
宽字符型,就是unsigned short

wchar_t 就是 unsigned short
xspace_time 2010-11-15
  • 打赏
  • 举报
回复
太多了,再说我也不是高手
仗剑骑驴 2010-11-15
  • 打赏
  • 举报
回复
谢谢楼上这些朋友的热心回答,我去试下看看,最主要是我这用法有没有错,网上找的文章看了似懂非懂的,得到的句柄不知道来源于哪里的,全都不是本进程的句柄。汇编底下调用函数地址也是正确的,技术有限,不能把每一句汇编都看明白。。。有谁能帮忙解答一下这个问题

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧