UNICODE_STRING

struct UNICODE_STRING
    Length          UINT16
    MaximumLength   UINT16
                    PADDING 4
    Buffer          PVOID
ends
struc defUNICODE_STRING [udata]
{
  common
  local stringData,stringSize
  align sizeof.PVOID
  stringData        du      udata
  stringSize        =       $ -stringData
  align sizeof.PVOID
  .:
  .Length           UINT16  (stringSize)
  .MaximumLength    UINT16  (stringSize + 1)
                    PADDING 4
  .Buffer           PVOID   stringData
}


定义:

    align 4
    szusDeviceName          du '\Device\devVirtToPhys',0
    align 4
    g_usDeviceName          UNICODE_STRING 21*2,22*2,szusDeviceName

或者用第二个结构定义(等价):

g_usDeviceName          defUNICODE_STRING '\Device\devVirtToPhys'


自定义控制码:

macro CTL_CODE DeviceType,Function,Method,Access
{
      (((DeviceType) shl 16) or ((Access) shl 14) or ((Function) shl 2) or (Method))
}


用法:

IOCTL_GET_PHYS_ADDRESS  equ CTL_CODE(FILE_DEVICE_UNKNOWN, 800h, METHOD_BUFFERED, FILE_READ_ACCESS + FILE_WRITE_ACCESS)


等价于:

IOCTL_GET_PHYS_ADDRESS equ  22E000h

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值