首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

To 设备加载的有关问题

2012-03-13 
To 设备加载的问题本人使用的硬件是Ez-usbfx2系列68013芯片但是怎么NTSTATUSEzusb_PnPAddDevice(INPDRIVER

To 设备加载的问题
本人使用的硬件是Ez-usb   fx2系列68013芯片
但是怎么

NTSTATUS
Ezusb_PnPAddDevice(
        IN   PDRIVER_OBJECT   DriverObject,
        IN   PDEVICE_OBJECT   PhysicalDeviceObject
        )
/*++
Routine   Description:
        This   routine   is   called   to   create   a   new   instance   of   the   device

Arguments:
        DriverObject   -   pointer   to   the   driver   object   for   this   instance   of   Ezusb
        PhysicalDeviceObject   -   pointer   to   a   device   object   created   by   the   bus

Return   Value:
        STATUS_SUCCESS   if   successful,
        STATUS_UNSUCCESSFUL   otherwise

--*/
{
      NTSTATUS                                 ntStatus   =   STATUS_SUCCESS;
      PDEVICE_OBJECT                     fdo   =   NULL;
      PDEVICE_EXTENSION               pdx;
     
      WCHAR   KernelDeviceNameBuffer[]   =   L "\\Device\\Ezusb-0 ";    
      UNICODE_STRING   KernelDeviceNameUnicode;
      WCHAR   UserDeviceLinkBuffer[]   =   L "\\DosDevices\\Ezusb-0 ";
      UNICODE_STRING   UserDeviceLinkUnicode;
      RtlInitUnicodeString   (&KernelDeviceNameUnicode,
                                                    KernelDeviceNameBuffer);//&KernelDeviceNameUnicode
           
      Ezusb_KdPrint(( "enter   Ezusb_PnPAddDevice\n "));

      ntStatus   =   IoCreateDevice   (DriverObject,
                                                            sizeof   (DEVICE_EXTENSION),
                                                            NULL,
                                                            FILE_DEVICE_UNKNOWN,
                                                            0,
                                                            FALSE,
                                                            &fdo);



      if   (NT_SUCCESS(ntStatus))
      {
         
            pdx   =   fdo-> DeviceExtension;

    /*RtlInitUnicodeString   (&UserDeviceLinkUnicode,
                                                    UserDeviceLinkBuffer);

            ntStatus   =   IoCreateSymbolicLink   (&UserDeviceLinkUnicode,
                                                                          &KernelDeviceNameUnicode);  
           
            RtlCopyMemory(pdx-> DeviceLinkName,
                                    UserDeviceLinkBuffer,
                                    sizeof(UserDeviceLinkBuffer));
            */
            fdo-> Flags   &=   ~DO_DEVICE_INITIALIZING;

            fdo-> Flags   |=   DO_DIRECT_IO;
            pdx-> PhysicalDeviceObject=PhysicalDeviceObject;

            pdx-> StackDeviceObject   =
                  IoAttachDeviceToDeviceStack(fdo,   PhysicalDeviceObject);

            ASSERT   (pdx-> StackDeviceObject   !=   NULL);

      pdx-> usage   =   1;
      pdx-> OpenHandles++;
      KeInitializeEvent(&pdx-> evRemove,
                                                NotificationEvent,
                                                FALSE);                                   }

      Ezusb_KdPrint(( "exit   Ezusb_PnPAddDevice   (%x)\n ",   ntStatus));

      return   ntStatus;
}

本人只要使用设备描述符L "\\Device\\Ezusb-0 ";     ,这个些代码,编译出来的驱动程序就不能正常加载,加载到一半时就出问题,代码31,请问高手这是怎么回事,这例程都是一些例子程序中拷贝过来,应该没有问题啊


[解决办法]
编译能通过么
[解决办法]
云1
[解决办法]
呵呵!

热点排行