Ignore:
Timestamp:
May 23, 2001, 7:00:44 PM (24 years ago)
Author:
sandervl
Message:

fix for media not inserted

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/hmdisk.cpp

    r5587 r5786  
    1 /* $Id: hmdisk.cpp,v 1.6 2001-04-26 13:22:45 sandervl Exp $ */
     1/* $Id: hmdisk.cpp,v 1.7 2001-05-23 17:00:44 sandervl Exp $ */
    22
    33/*
     
    4444BOOL HMDeviceDiskClass::FindDevice(LPCSTR lpClassDevName, LPCSTR lpDeviceName, int namelength)
    4545{
    46     //\\.\\x:               -> length 6
     46    //\\.\x:                -> length 6
    4747    //\\.\PHYSICALDRIVEn    -> length 18
    4848    if(namelength != 6 && namelength != 18) {
     
    106106    if (hFile != INVALID_HANDLE_ERROR || GetLastError() == ERROR_NOT_READY)
    107107    {
    108         if(hFile == INVALID_HANDLE_ERROR) SetLastError(NO_ERROR);
    109 
    110         pHMHandleData->hHMHandle  = hFile;
     108        if(hFile == INVALID_HANDLE_ERROR) {
     109             SetLastError(NO_ERROR);
     110             pHMHandleData->hHMHandle  = 0; //handle lookup fails if this is set to -1
     111        }
     112        else pHMHandleData->hHMHandle  = hFile;
     113       
    111114        pHMHandleData->dwUserData = GetDriveTypeA(lpFileName);
    112115        return (NO_ERROR);
     
    133136                             LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped)
    134137{
     138#ifdef DEBUG
     139    char *msg = NULL;
     140
     141    switch(dwIoControlCode)
     142    {
     143    case FSCTL_DELETE_REPARSE_POINT:
     144        msg = "FSCTL_DELETE_REPARSE_POINT";
     145        break;
     146    case FSCTL_DISMOUNT_VOLUME:
     147        msg = "FSCTL_DISMOUNT_VOLUME";
     148        break;
     149    case FSCTL_GET_COMPRESSION:
     150        msg = "FSCTL_GET_COMPRESSION";
     151        break;
     152    case FSCTL_GET_REPARSE_POINT:
     153        msg = "FSCTL_GET_REPARSE_POINT";
     154        break;
     155    case FSCTL_LOCK_VOLUME:
     156        msg = "FSCTL_LOCK_VOLUME";
     157        break;
     158    case FSCTL_QUERY_ALLOCATED_RANGES:
     159        msg = "FSCTL_QUERY_ALLOCATED_RANGES";
     160        break;
     161    case FSCTL_SET_COMPRESSION:
     162        msg = "FSCTL_SET_COMPRESSION";
     163        break;
     164    case FSCTL_SET_REPARSE_POINT:
     165        msg = "FSCTL_SET_REPARSE_POINT";
     166        break;
     167    case FSCTL_SET_SPARSE:
     168        msg = "FSCTL_SET_SPARSE";
     169        break;
     170    case FSCTL_SET_ZERO_DATA:
     171        msg = "FSCTL_SET_ZERO_DATA";
     172        break;
     173    case FSCTL_UNLOCK_VOLUME:
     174        msg = "FSCTL_UNLOCK_VOLUME";
     175        break;
     176    case IOCTL_DISK_CHECK_VERIFY:
     177        msg = "IOCTL_DISK_CHECK_VERIFY";
     178        break;
     179    case IOCTL_DISK_EJECT_MEDIA:
     180        msg = "IOCTL_DISK_EJECT_MEDIA";
     181        break;
     182    case IOCTL_DISK_FORMAT_TRACKS:
     183        msg = "IOCTL_DISK_FORMAT_TRACKS";
     184        break;
     185    case IOCTL_DISK_GET_DRIVE_GEOMETRY:
     186        msg = "IOCTL_DISK_GET_DRIVE_GEOMETRY";
     187        break;
     188    case IOCTL_DISK_GET_DRIVE_LAYOUT:
     189        msg = "IOCTL_DISK_GET_DRIVE_LAYOUT";
     190        break;
     191    case IOCTL_DISK_GET_MEDIA_TYPES:
     192        msg = "IOCTL_DISK_GET_MEDIA_TYPES";
     193        break;
     194    case IOCTL_DISK_GET_PARTITION_INFO:
     195        msg = "IOCTL_DISK_GET_PARTITION_INFO";
     196        break;
     197    case IOCTL_DISK_LOAD_MEDIA:
     198        msg = "IOCTL_DISK_LOAD_MEDIA";
     199        break;
     200    case IOCTL_DISK_MEDIA_REMOVAL:
     201        msg = "IOCTL_DISK_MEDIA_REMOVAL";
     202        break;
     203    case IOCTL_DISK_PERFORMANCE:
     204        msg = "IOCTL_DISK_PERFORMANCE";
     205        break;
     206    case IOCTL_DISK_REASSIGN_BLOCKS:
     207        msg = "IOCTL_DISK_REASSIGN_BLOCKS";
     208        break;
     209    case IOCTL_DISK_SET_DRIVE_LAYOUT:
     210        msg = "IOCTL_DISK_SET_DRIVE_LAYOUT";
     211        break;
     212    case IOCTL_DISK_SET_PARTITION_INFO:
     213        msg = "IOCTL_DISK_SET_PARTITION_INFO";
     214        break;
     215    case IOCTL_DISK_VERIFY:
     216        msg = "IOCTL_DISK_VERIFY";
     217        break;
     218    case IOCTL_SERIAL_LSRMST_INSERT:
     219        msg = "IOCTL_SERIAL_LSRMST_INSERT";
     220        break;
     221    case IOCTL_STORAGE_CHECK_VERIFY:
     222        msg = "IOCTL_STORAGE_CHECK_VERIFY";
     223        break;
     224    case IOCTL_STORAGE_EJECT_MEDIA:
     225        msg = "IOCTL_STORAGE_EJECT_MEDIA";
     226        break;
     227    case IOCTL_STORAGE_GET_MEDIA_TYPES:
     228        msg = "IOCTL_STORAGE_GET_MEDIA_TYPES";
     229        break;
     230    case IOCTL_STORAGE_LOAD_MEDIA:
     231        msg = "IOCTL_STORAGE_LOAD_MEDIA";
     232        break;
     233    case IOCTL_STORAGE_MEDIA_REMOVAL:
     234        msg = "IOCTL_STORAGE_MEDIA_REMOVAL";
     235        break;
     236    case IOCTL_SCSI_PASS_THROUGH:
     237        msg = "IOCTL_SCSI_PASS_THROUGH";
     238        break;
     239    case IOCTL_SCSI_MINIPORT:
     240        msg = "IOCTL_SCSI_MINIPORT";
     241        break;
     242    case IOCTL_SCSI_GET_INQUIRY_DATA:
     243        msg = "IOCTL_SCSI_GET_INQUIRY_DATA";
     244        break;
     245    case IOCTL_SCSI_GET_CAPABILITIES:
     246        msg = "IOCTL_SCSI_GET_CAPABILITIES";
     247        break;
     248    case IOCTL_SCSI_PASS_THROUGH_DIRECT:
     249        msg = "IOCTL_SCSI_PASS_THROUGH_DIRECT";
     250        break;
     251    case IOCTL_SCSI_GET_ADDRESS:
     252        msg = "IOCTL_SCSI_GET_ADDRESS";
     253        break;
     254    case IOCTL_SCSI_RESCAN_BUS:
     255        msg = "IOCTL_SCSI_RESCAN_BUS";
     256        break;
     257    case IOCTL_SCSI_GET_DUMP_POINTERS:
     258        msg = "IOCTL_SCSI_GET_DUMP_POINTERS";
     259        break;
     260    case IOCTL_SCSI_FREE_DUMP_POINTERS:
     261        msg = "IOCTL_SCSI_FREE_DUMP_POINTERS";
     262        break;
     263    case IOCTL_IDE_PASS_THROUGH:
     264        msg = "IOCTL_IDE_PASS_THROUGH";
     265        break;
     266    }
     267    if(msg) {
     268        dprintf(("HMDeviceDiskClass::DeviceIoControl %s", msg));
     269    }
     270#endif
     271
    135272    switch(dwIoControlCode)
    136273    {
     
    146283    case FSCTL_SET_ZERO_DATA:
    147284    case FSCTL_UNLOCK_VOLUME:
     285        break;
     286
    148287    case IOCTL_DISK_CHECK_VERIFY:
    149288    case IOCTL_DISK_EJECT_MEDIA:
     
    161300    case IOCTL_DISK_VERIFY:
    162301    case IOCTL_SERIAL_LSRMST_INSERT:
     302        break;
     303
    163304    case IOCTL_STORAGE_CHECK_VERIFY:
     305        if(lpBytesReturned) {
     306            lpBytesReturned = 0;
     307        }
     308        //TODO: check if disk has been inserted or removed
     309        if(pHMHandleData->hHMHandle == 0) {
     310            SetLastError(ERROR_NOT_READY);
     311            return FALSE;
     312        }
     313        SetLastError(NO_ERROR);
     314        return TRUE;
     315
    164316    case IOCTL_STORAGE_EJECT_MEDIA:
    165317    case IOCTL_STORAGE_GET_MEDIA_TYPES:
Note: See TracChangeset for help on using the changeset viewer.