xx_qiang
驱动小牛
驱动小牛
  • 注册日期2004-07-30
  • 最后登录2017-02-27
  • 粉丝2
  • 关注1
  • 积分31分
  • 威望249点
  • 贡献值0点
  • 好评度171点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1258回复:0

请问:diskperf中创建的符号链接的问题

楼主#
更多 发布于:2008-07-24 14:48
各位大侠:
        我在diskperf中参考filedisk的代码,在startdevice的时候根据磁盘扇区的个数创建设备,设备都创建成功,符号链接也没有问题。而应用层在createfile的时候却一直失败,错误代码2,也就是系统找不到指定文件。请大侠们帮我看看代码。
    swprintf(device_name_buffer,DEVICE_NAME_PREFIX L"%u",Number);
    RtlInitUnicodeString(&device_name, device_name_buffer);
    status = IoCreateDevice(DriverObject,sizeof(DEVICE_EXTENSION),&device_name,FILE_DEVICE_DISK,0,FALSE,&device_object);
    if (!NT_SUCCESS(status))
    {
       return status;
    }
    device_object->Flags |= DO_DIRECT_IO;
    device_extension = (PDEVICE_EXTENSION) device_object->DeviceExtension;
    device_extension->media_in_device = FALSE;
    InitializeListHead(&device_extension->list_head);
    KeInitializeSpinLock(&device_extension->list_lock);
    KeInitializeEvent(&device_extension->request_event,SynchronizationEvent,FALSE);
    device_extension->terminate_thread = FALSE;
这是驱动中创建的设备。
    char    VolumeName[] = "\\\\.\\i:";
    char    DeviceName[255];
    memset(DeviceName,0,255);
    DWORD DeviceNumber = 0;
    wsprintf(DeviceName, DEVICE_NAME_PREFIX "%u", DeviceNumber);
    if (!DefineDosDevice(
        DDD_RAW_TARGET_PATH,
        &VolumeName[4],
        DeviceName
        ))
    {
        //PrintLastError(&VolumeName[4]);
        DWORD    dwErrWin32 = GetLastError();
        
        return ;
    }
    
    HANDLE device = CreateFile(        
        VolumeName,
        GENERIC_READ | GENERIC_WRITE,
        FILE_SHARE_READ | FILE_SHARE_WRITE,
        NULL,
        OPEN_EXISTING,
        NULL,
        NULL
        );
    这是在应用程序中。代码都是从filedisk中得来的。但是为什么filedisk能createfile成功,而代码移植到diskperf却不行了呢?
游客

返回顶部