mho07
驱动牛犊
驱动牛犊
  • 注册日期2009-02-24
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望21点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1394回复:2

问一个关于设备扩展的问题

楼主#
更多 发布于:2009-04-30 17:58
这是驱动开发技术详见中的一段标准代码
其中有两句理解起来很困惑
特此求助

代码:
/************************************************************************
* 函数名称:HelloWDMAddDevice
* 功能描述:添加新设备
* 参数列表:
      DriverObject:从I/O管理器中传进来的驱动对象
      PhysicalDeviceObject:从I/O管理器中传进来的物理设备对象
* 返回 值:返回添加新设备状态
*************************************************************************/
#pragma PAGEDCODE
NTSTATUS HelloWDMAddDevice(IN PDRIVER_OBJECT DriverObject,
                           IN PDEVICE_OBJECT PhysicalDeviceObject)
{
    PAGED_CODE();
    KdPrint(("Enter HelloWDMAddDevice\n"));

    NTSTATUS status;
    PDEVICE_OBJECT fdo;
    UNICODE_STRING devName;
    RtlInitUnicodeString(&devName,L"\\Device\\MyWDMDevice");
    status = IoCreateDevice(
        DriverObject,
        sizeof(DEVICE_EXTENSION),
        &(UNICODE_STRING)devName,
        FILE_DEVICE_UNKNOWN,
        0,
        FALSE,
        &fdo);
    if( !NT_SUCCESS(status))
        return status;
    //
    PDEVICE_EXTENSION pdx = (PDEVICE_EXTENSION)fdo->DeviceExtension;
    pdx->fdo = fdo;
    pdx->NextStackDevice = IoAttachDeviceToDeviceStack(fdo, PhysicalDeviceObject);
    UNICODE_STRING symLinkName;
    RtlInitUnicodeString(&symLinkName,L"\\DosDevices\\HelloWDM");

    pdx->ustrDeviceName = devName;
    pdx->ustrSymLinkName = symLinkName;
    status = IoCreateSymbolicLink(&(UNICODE_STRING)symLinkName,&(UNICODE_STRING)devName);

其中有两句
    PDEVICE_EXTENSION pdx = (PDEVICE_EXTENSION)fdo->DeviceExtension;
    pdx->fdo = fdo;
第一句我的理解是:设备扩展对象指针pdx指向驱动对象fdo中的设备扩展结构
第二句:将驱动对象fdo指向设备扩展对象中的驱动对象fdo
这样就是将设备扩展结构和设备驱动对象关联起来了

可是第一句后半部分:(PDEVICE_EXTENSION)fdo->DeviceExtension
这不就是把fdo强制转换为设备扩展对象了么
这样他怎么还能访问DeviceExtension?
这又不是很扯么?


究竟是我的那一种想法错了
谢谢指点
新手上路
zmmkele
驱动牛犊
驱动牛犊
  • 注册日期2009-04-21
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分23分
  • 威望201点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-05-04 16:11
先fdo->DeviceExtension
后 PDEVICE_EXTENSION强制转化
努力ing
wangkuai1986
驱动牛犊
驱动牛犊
  • 注册日期2009-04-30
  • 最后登录2009-06-19
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-05-15 17:30
->的优先级比()高
倚天照海花无数 高山流水心自知
游客

返回顶部