能力值:
( LV13,RANK:1760 )
|
-
-
2 楼
,总结挺好的...
以前也做过类似的笔记,
让阿里收了你吧...
老恒是谁? O(∩_∩)O哈哈~
|
能力值:
(RANK:290 )
|
-
-
3 楼
web 很厉害,阿里好像就收实习生.
|
能力值:
( LV13,RANK:1760 )
|
-
-
4 楼
哦,你一说web,我大概知道是谁了...
是啊,阿里应该收实习生呀,赶快到阿里的碗里去
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
应该是5454....
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
看不懂怎么办?
|
能力值:
( LV13,RANK:1760 )
|
-
-
7 楼
先学驱动编程,这是ring0跟ring3通讯的几种方式...
|
能力值:
( LV4,RANK:50 )
|
-
-
8 楼
你的头像。。。
|
能力值:
( LV5,RANK:60 )
|
-
-
9 楼
大二就这么吊,前途无量啊
|
能力值:
( LV12,RANK:340 )
|
-
-
10 楼
LZ前途无量,我差不多也是大二的年纪,技术还差的远呐
|
能力值:
(RANK:290 )
|
-
-
11 楼
你更牛 哈,调试比我强不知道多少.
|
能力值:
( LV12,RANK:340 )
|
-
-
12 楼
额,还算熟悉,算不上精通,各有所长吧
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
一点都不懂。。
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
我胡汉三又回来看了,这次瞧一瞧ReadFile是如何从内核层传数据到应用层的?
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
①
WINBASEAPI
BOOL
WINAPI
ReadFile(
__in HANDLE hFile,//这个是设备的句柄
__out_bcount_part_opt(nNumberOfBytesToRead, *lpNumberOfBytesRead) //你要out的缓冲区(结构体)__out_data_source(FILE) LPVOID lpBuffer,
__in DWORD nNumberOfBytesToRead,//你要读取多少的字节数;r0对应 uLenth=stack->Parameters.Read.Length;1
__out_opt LPDWORD lpNumberOfBytesRead,//这个是返回的大小;r0对应pIrp->IoStatus.Information = uLenth;
__inout_opt LPOVERLAPPED lpOverlapped//同步才会用到;r0没用要
);
②
WriteFile(
__in HANDLE hFile,//对应设备句柄
__in_bcount_opt(nNumberOfBytesToWrite) LPCVOID lpBuffer,//要传人的缓冲区
__in DWORD nNumberOfBytesToWrite,//缓冲区的大小uLenth=stack->Parameters.Write.Length;2
__out_opt LPDWORD lpNumberOfBytesWritten,//传出大小//同上
__inout_opt LPOVERLAPPED lpOverlapped//同步不管
);
③:如果想稳定的交互信息,最关键还是传人 大小 ;假如大小太小,数据很多,那么到了内核层,由于事先irp分配的大小(r3决定的空间1.2决定),你可能取出 多余数据(溢出了),或者直接蓝屏了(访问到无效空间)。
我估计我就是因为你写的第三条,直接蓝屏的,亲~~~~~~~~~~~~~
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
你是不是用五笔输入的,因为传入和传人。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
又找来你这篇文章来看,又看了一遍,再一次感慨,写的真好哇。做ppt中。总觉得要“抽丝剥茧”,写一点点有技术含量的ppt。
|
|
|