建立设备、符号链接及初识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这个东西怎么来的,下午琢磨着是不是已经定义过了 所以可以直接拿来用 晚上就试着写了句代码(上面红字处) 果然编译通过 这下就明白了
.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这个东西怎么来的,下午琢磨着是不是已经定义过了 所以可以直接拿来用 晚上就试着写了句代码(上面红字处) 果然编译通过 这下就明白了
相关文章推荐
- 驱动开发之符号链接和设备名称
- WINDOWS也可以象LINUX一样建立符号链接
- 驱动开发之符号链接和设备名称
- 不同目录下建立符号链接出错路径下建立失败:broken symbolic link to netease-cloud-music
- IoCreateSymbolicLink函数的作用以及符号链接、设备名称之间的关系
- ln建立时符号链接时出现同名文件或目录
- 符号链接与设备接口名
- 驱动开发之符号链接和设备名称
- 0.driverbase-驱动对象、设备对象、DriverEntry、IoCreateDevice、符号链接、DriverUnLoad、WDM
- 驱动中通过设备链接名取得磁盘符号的方法
- win10建立符号链接
- 利用udev为Linux 设备文件创建符号链接
- 驱动开发之符号链接和设备名称
- Windows使用mklink建立“符号链接”
- [Linux文件属性]使用symlink函数建立符号链接文件
- 设备名和符号链接名
- 创建设备的符号链接
- 驱动开发之符号链接和设备名称
- Linux下软RAID md符号链接不到RAID设备节点的解决方法
- 【Window内核驱动开发】——通过符号链接获取真实设备