阅读:1406回复:0
!!!! FileDisk 中的问题 !!!!
我想先在应用程序中打开文件,再将其大小传进驱动.
DWORD dwFileSize; DWORD dwFileSizeHigh; ULONGLONG uFileSize; hFile = CreateFile( (char *)"C:\FileDisk.img", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if( hFile != INVALID_HANDLE_VALUE ) { dwFileSize = GetFileSize(hFile, &dwFileSizeHigh); if( dwFileSize != 0xFFFFFFFF ) { memcpy(&uFileSize, &dwFileSize, 4); memcpy((char*)&uFileSize + 4, &dwFileSizeHigh, 4); } } else printf("open file failed !n"); if (!DeviceIoControl( Device, IOCTL_NETDISK_OPEN_FILE, (LPVOID)&uFileSize, sizeof(ULONGLONG), NULL, 0, &bReturn, NULL )) { DefineDosDevice(DDD_REMOVE_DEFINITION, &VolumeName[4], NULL); return -1; } 在驱动中: NTSTATUS NetdiskOpenFile( IN PDEVICE_EXTENSION pDeviceExt, IN PIRP pIrp ) { ULONGLONG* pFileSize; pFileSize = (ULONGLONG *)pIrp->AssociatedIrp.SystemBuffer; pDeviceExt->uDiskSize = *pFileSize; pDeviceExt->MediaInDevice = TRUE; DbgPrint("get the filesize is %u.n",pDeviceExt->uDiskSize); pIrp->IoStatus.Status = STATUS_SUCCESS; pIrp->IoStatus.Information = 0; return STATUS_SUCCESS; } 然后测试时,无法打开Z盘,参数错误.. 在DbgView中显示时diskDispatchDeviceControl中 只有IOCTL_DISK_GET_DRIVE_GEOMETRY, 哪位大哥知道原因!速回贴! [编辑 - 3/15/04 by Zhujnt] |
|
|