阅读:1621回复:3
请问_IO_STACK_LOCATION里的control是干什么用的?
以下是某个程序片段:
.text:00013BF7 mov eax, [esi+60h] //Irp->CurrentStackLocation .text:00013BFA sub eax, 24h //0x24 为 sizeof(IO_STACK_LOCATION) .text:00013BFD mov edx, esi .text:00013BFF mov dword ptr [eax+1Ch], offset loc_13522 .text:00013C06 mov [eax+20h], ebx .text:00013C09 mov byte ptr [eax+3], 0E0h //问题就是这句 typedef struct _IO_STACK_LOCATION { UCHAR MajorFunction; UCHAR MinorFunction; UCHAR Flags; UCHAR Control; ..... } eax+3 就是control,我想问,\"E0\"代表的是什么意思呢?我在ifs里查不到这个Control代表是什么意思 ,thanks |
|
沙发#
发布于:2005-05-10 16:54
这里是I/O Manager设置的一些标志,例如如果IRP是异步处理的,IoMarkIrpPending会设置SL_PENDING_RETURNED位,其它还有一些I/O Manager内部设置的Irp成功,失败,取消等位,但这些为保持跨平台性推荐I/O Manager内部使用,我们最好通过DDK中的函数使用
|
|
|
板凳#
发布于:2005-05-11 15:26
E0 = 0x20 | 0x40 | 0x80
表示不管irp完成取消或者是成功或者失败 都调用完成例程 |
|
|
地板#
发布于:2005-05-11 17:27
懂了,谢谢上面两位高手
|
|