Ignore:
Timestamp:
Oct 26, 2001, 4:48:37 PM (24 years ago)
Author:
sandervl
Message:

read toc ioctl fixes

File:
1 edited

Legend:

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

    r7219 r7220  
    1 /* $Id: hmdisk.cpp,v 1.19 2001-10-26 13:03:04 sandervl Exp $ */
     1/* $Id: hmdisk.cpp,v 1.20 2001-10-26 14:48:37 sandervl Exp $ */
    22
    33/*
     
    589589            *lpBytesReturned = 0;
    590590
    591         if(nOutBufferSize < 4 || !pTOC) {
     591        if(!pTOC) {
     592            SetLastError(ERROR_INVALID_PARAMETER);
     593            return FALSE;
     594        }
     595        if(nOutBufferSize < sizeof(CDROM_TOC)) {
    592596            SetLastError(ERROR_INSUFFICIENT_BUFFER);
    593597            return FALSE;
     
    605609        pTOC->LastTrack  = diskinfo.ucLastTrack;
    606610        numtracks = pTOC->LastTrack - pTOC->FirstTrack + 1;
    607         *(WORD *)&pTOC->Length = 4 + numtracks*sizeof(TRACK_DATA);
    608611        dprintf(("first %d, last %d, num %d", pTOC->FirstTrack, pTOC->LastTrack, numtracks));
     612
     613        int len = 4 + numtracks*sizeof(TRACK_DATA) - 2; //minus length itself;
     614        //big endian format
     615        pTOC->Length[0] = HIBYTE(len);
     616        pTOC->Length[1] = LOBYTE(len);
    609617
    610618        if(nOutBufferSize < 4+numtracks*sizeof(TRACK_DATA)) {
     
    633641            pTOC->TrackData[i].Adr         = trackinfo.ucTrackControl & 0xF;
    634642            pTOC->TrackData[i].Reserved1   = 0;
    635             *(DWORD *)&pTOC->TrackData[i].Address = trackinfo.ulTrackAddr;
     643            //big endian format
     644            pTOC->TrackData[i].Address[0]  = HIWORD(HIBYTE(trackinfo.ulTrackAddr));
     645            pTOC->TrackData[i].Address[1]  = HIWORD(LOBYTE(trackinfo.ulTrackAddr));
     646            pTOC->TrackData[i].Address[2]  = LOWORD(HIBYTE(trackinfo.ulTrackAddr));
     647            pTOC->TrackData[i].Address[3]  = LOWORD(LOBYTE(trackinfo.ulTrackAddr));
    636648        }       
    637649        if(lpBytesReturned)
Note: See TracChangeset for help on using the changeset viewer.