Changeset 6984 for trunk/src


Ignore:
Timestamp:
Oct 10, 2001, 4:47:42 PM (24 years ago)
Author:
phaller
Message:

added IOCTL_CDROM_PLAY_AUDIO_MSF

File:
1 edited

Legend:

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

    r6978 r6984  
    1 /* $Id: hmdisk.cpp,v 1.14 2001-10-10 11:01:17 phaller Exp $ */
     1/* $Id: hmdisk.cpp,v 1.15 2001-10-10 14:47:42 phaller Exp $ */
    22
    33/*
     
    177177//******************************************************************************
    178178//******************************************************************************
     179
    179180
    180181// this helper function just calls the specified
     
    487488        break;
    488489
    489     case IOCTL_DISK_CHECK_VERIFY:
    490     case IOCTL_DISK_EJECT_MEDIA:
    491490    case IOCTL_DISK_FORMAT_TRACKS:
    492491    case IOCTL_DISK_GET_DRIVE_LAYOUT:
     
    533532    case IOCTL_CDROM_READ_TOC:
    534533    case IOCTL_CDROM_GET_CONTROL:
     534        break;
     535   
    535536    case IOCTL_CDROM_PLAY_AUDIO_MSF:
     537    {
     538      dprintf(("Play CDROM audio playback"));
     539     
     540#pragma pack(1)
     541      struct
     542      {
     543        DWORD ucSignature;
     544        BYTE  ucAddressingMode;
     545        DWORD ulStartingMSF;
     546        DWORD ulEndingMSF;
     547      } ParameterBlock;
     548#pragma pack()
     549     
     550      PCDROM_PLAY_AUDIO_MSF pPlay = (PCDROM_PLAY_AUDIO_MSF)lpInBuffer;
     551     
     552      // setup the parameter block
     553      ParameterBlock.ucSignature = 0x43443031; // 'CD01'
     554      ParameterBlock.ucAddressingMode = 1;     // MSF format
     555     
     556      // @@@PH unknown if this kind of MSF conversion is correct!
     557      ParameterBlock.ulStartingMSF    = pPlay->StartingM << 16 |
     558                                        pPlay->StartingS << 8  |
     559                                        pPlay->StartingF;
     560      ParameterBlock.ulEndingMSF      = pPlay->EndingM << 16 |
     561                                        pPlay->EndingS << 8  |
     562                                        pPlay->EndingF;
     563       
     564      DWORD dwParameterSize = sizeof( ParameterBlock );
     565      DWORD dwDataSize      = 0;
     566      DWORD ret;
     567   
     568      if(lpBytesReturned)
     569        *lpBytesReturned = 0;
     570   
     571      ret = OSLibDosDevIOCtl(pHMHandleData->hHMHandle,
     572                             0x81,  // IOCTL_CDROMAUDIO
     573                             0x50,  // CDROMAUDIO_PLAYAUDIO
     574                             &ParameterBlock,
     575                             sizeof( ParameterBlock ),
     576                             &dwParameterSize,
     577                             NULL,
     578                             0,
     579                             &dwDataSize);
     580      if(ret)
     581      {
     582        SetLastError(error2WinError(ret));
     583        return FALSE;
     584      }
     585      SetLastError(ERROR_SUCCESS);
     586      return TRUE;
     587    }
     588     
    536589    case IOCTL_CDROM_SEEK_AUDIO_MSF:
    537590        break;
     
    663716    // -------------
    664717     
     718    case IOCTL_DISK_CHECK_VERIFY:
    665719    case IOCTL_STORAGE_CHECK_VERIFY:
     720      dprintf(("IOCTL_STORAGE_CHECK_VERIFY incompletely implemented"));
    666721        if(lpBytesReturned) {
    667722            *lpBytesReturned = 0;
     
    675730        return TRUE;
    676731
     732    case IOCTL_DISK_EJECT_MEDIA:
    677733    case IOCTL_STORAGE_EJECT_MEDIA:
    678734    {
Note: See TracChangeset for help on using the changeset viewer.