能力值:
( LV9,RANK:280 )
|
-
-
2 楼
统一用ULONG32和ULONG64,不要用void * HANDLE等大小会变化的类型
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
64位ULONG是ULONG64,32位编译是ULONG32,肯定会出问题啊
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
这种情况下是驱动去兼容应用程序。内核根据当前进程的不同分别采用不同的结构体即可。可以参考PEB32/PEB64的定义:在内核中定义32位指针时,全部使用ULONG即可。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
typedef struct LIST_ENTRY32 { ULONG Flink; ULONG Blink; } LIST_ENTRY32; typedef LIST_ENTRY32 *PLIST_ENTRY32;
typedef struct LIST_ENTRY64 { ULONGLONG Flink; ULONGLONG Blink; } LIST_ENTRY64; typedef LIST_ENTRY64 *PLIST_ENTRY64;
typedef struct _LIST_ENTRY { struct _LIST_ENTRY *Flink; struct _LIST_ENTRY *Blink; } LIST_ENTRY, *PLIST_ENTRY, *RESTRICTED_POINTER PRLIST_ENTRY;
PLIST_ENTRY32 list32; list32 = (PLIST_ENTRY32)(ULONG_PTR)list32->Blink;
体会体会 总得来说,所有交互的结构体都要定义出32位的。内核使用时将其转换一下即可
|
能力值:
( LV3,RANK:20 )
|
-
-
6 楼
iceway
64位ULONG是ULONG64,32位编译是ULONG32,肯定会出问题啊
ULONG不会, ULONG_PTR才是
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
你32位传入给64位驱动的数据类型也是64位的就行了. 比如 将32位的DWORD LONG ULONG PVOID 这些类型都改成后面加一个64就可以了
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
rrrfff
ULONG不会, ULONG_PTR才是
请问,CSDN的列宁的现况?好多年没见过了,连续私信了几年都不见回复
|
能力值:
( LV3,RANK:30 )
|
-
-
9 楼
hzqst
统一用ULONG32和ULONG64,不要用void * HANDLE等大小会变化的类型
那是否需要指定ULONG是32还是64
|
能力值:
( LV3,RANK:30 )
|
-
-
10 楼
rrrfff
ULONG不会, ULONG_PTR才是
嗯嗯,谢谢dalao
|
能力值:
( LV3,RANK:30 )
|
-
-
11 楼
lononan
你32位传入给64位驱动的数据类型也是64位的就行了.
比如 将32位的DWORD LONG ULONG PVOID 这些类型都改成后面加一个64就可以了
嗯嗯,统一指定就ok了吧~
|
能力值:
( LV3,RANK:30 )
|
-
-
12 楼
rrrfff
ULONG不会, ULONG_PTR才是
嗯嗯,谢谢
|
能力值:
( LV3,RANK:20 )
|
-
-
13 楼
哇咔咔zs 请问,CSDN的列宁的现况?好多年没见过了,连续私信了几年都不见回复
可惜, 他的Q名改了, 当时没备注现在我也找不到他了... 最后一次见他Q名是北京邮电大学, 问他为啥, 说伪装...现在要没离校的话估计读博期间... 另外他很喜欢生物, 也可能出国搞研究去了...
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
rrrfff
哇咔咔zs
请问,CSDN的列宁的现况?好多年没见过了,连续私信了几年都不见回复 可惜, 他的Q名改了,&nb ...
好吧,当时认识他是19岁, 21,22,23,24每年都私信,应该不上CSDN了 天才一个啊,所问的每一个问题他无所不知的感觉
|
|
|