您的位置:首页 > 其它

建立设备、符号链接及初识SSDT

2011-04-07 23:08 183 查看
这两天了解了下建立设备和符号链接这块的知识 改了下代码 熟悉一下

.386
.model flat, stdcall
option casemap:none

include w2k/ntstatus.inc
include w2k/ntddk.inc
include w2k/ntoskrnl.inc
include w2k/w2kundoc.inc
includelib ntoskrnl.lib

.data
szDeviceName dw '/','d','e','v','i','c','e','/','1',0 ;这块必须是字型数据 但一般定义成字型会出错 所以只能一个字一个字定义
szSymbolicLinkName dw '/','?','?','/','1',0

.code INIT

DriverEntry proc pDriverObject:PDRIVER_OBJECT,pusRegistryPath:PUNICODE_STRING
local status:NTSTATUS
local pDeviceObject:PVOID

local DeviceName:UNICODE_STRING
local SymbolicLinkName:UNICODE_STRING

int 3

invoke RtlInitUnicodeString,addr DeviceName,addr szDeviceName
invoke RtlInitUnicodeString,addr SymbolicLinkName,addr szSymbolicLinkName

mov status,STATUS_DEVICE_CONFIGURATION_ERROR
invoke IoCreateDevice,pDriverObject,0,addr szDeviceName,FILE_DEVICE_UNKNOWN,0,FALSE,addr pDeviceObject
.if eax == STATUS_SUCCESS
invoke IoCreateSymbolicLink, addr SymbolicLinkName, addr szDeviceName

.if eax == STATUS_SUCCESS
mov eax, pDriverObject
mov eax,KeServiceDescriptorTable

.endif
.endif
ret

DriverEntry endp

end DriverEntry

具体内容可以参考罗云彬翻译的一个KMDTUT之类的手册

中午看了SSDT这块 当时就没明白KeServiceDescriptorTable这个东西怎么来的,下午琢磨着是不是已经定义过了 所以可以直接拿来用 晚上就试着写了句代码(上面红字处) 果然编译通过 这下就明白了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: