Changeset 230
- Timestamp:
- Apr 7, 2017, 12:24:54 AM (8 years ago)
- Location:
- trunk/src
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/src/ifs/fat32.c ¶
r229 r230 842 842 if(!pOpenInfo->fLargeVolume) 843 843 { 844 pArgDat->sf.psffsi->sfi_size /= SECTOR_SIZE; 844 struct vpfsi far * pvpfsi; 845 struct vpfsd far * pvpfsd; 846 847 FSH_GETVOLPARM(pArgDat->sf.psffsi->sfi_hVPB, &pvpfsi, &pvpfsd); 848 pArgDat->sf.psffsi->sfi_size /= pvpfsi->vpi_bsize; 845 849 846 850 if (f32Parms.fLargeFiles) 847 pArgDat->sf.psffsi->sfi_sizel /= SECTOR_SIZE;851 pArgDat->sf.psffsi->sfi_sizel /= pvpfsi->vpi_bsize; 848 852 } 849 853 … … 2063 2067 pVolInfo->usRASectors = MAX_RASECTORS; 2064 2068 #else 2065 if (pVolInfo->usRASectors > (pVolInfo->ulBlockSize / 512) * 4)2066 pVolInfo->usRASectors = (pVolInfo->ulBlockSize / 512) * 4;2069 if (pVolInfo->usRASectors > (pVolInfo->ulBlockSize / pVolInfo->BootSect.bpb.BytesPerSector ) * 4) 2070 pVolInfo->usRASectors = (pVolInfo->ulBlockSize / pVolInfo->BootSect.bpb.BytesPerSector ) * 4; 2067 2071 #endif 2068 2072 *(PUSHORT)pParm = pVolInfo->usRASectors; … … 2230 2234 } 2231 2235 pRSD = (PREADSECTORDATA)pParm; 2232 if ((USHORT)cbData < pRSD->nSectors * SECTOR_SIZE)2236 if ((USHORT)cbData < pRSD->nSectors * pVolInfo->BootSect.bpb.BytesPerSector) 2233 2237 { 2234 2238 rc = ERROR_BUFFER_OVERFLOW; … … 2264 2268 } 2265 2269 pWSD = (PWRITESECTORDATA)pParm; 2266 if ((USHORT)cbData < pWSD->nSectors * SECTOR_SIZE)2270 if ((USHORT)cbData < pWSD->nSectors * pVolInfo->BootSect.bpb.BytesPerSector) 2267 2271 { 2268 2272 rc = ERROR_INSUFFICIENT_BUFFER; … … 3081 3085 { 3082 3086 ULONG ulSector; 3083 ULONG ulSectorsPerBlock = pVolInfo->ulBlockSize / SECTOR_SIZE;3087 ULONG ulSectorsPerBlock = pVolInfo->ulBlockSize / pVolInfo->BootSect.bpb.BytesPerSector; 3084 3088 USHORT rc; 3085 3089 … … 3117 3121 { 3118 3122 ULONG ulSector; 3119 ULONG ulSectorsPerBlock = pVolInfo->ulBlockSize / SECTOR_SIZE;3123 ULONG ulSectorsPerBlock = pVolInfo->ulBlockSize / pVolInfo->BootSect.bpb.BytesPerSector; 3120 3124 USHORT rc; 3121 3125 … … 3235 3239 static ULONG GetFatEntrySec(PVOLINFO pVolInfo, ULONG ulCluster) 3236 3240 { 3237 return GetFatEntryBlock(pVolInfo, ulCluster, 512* 3); // in three sector blocks3241 return GetFatEntryBlock(pVolInfo, ulCluster, pVolInfo->BootSect.bpb.BytesPerSector * 3); // in three sector blocks 3238 3242 } 3239 3243 … … 3270 3274 static ULONG GetFatEntry(PVOLINFO pVolInfo, ULONG ulCluster) 3271 3275 { 3272 return GetFatEntryEx(pVolInfo, pVolInfo->pbFatSector, ulCluster, 512* 3);3276 return GetFatEntryEx(pVolInfo, pVolInfo->pbFatSector, ulCluster, pVolInfo->BootSect.bpb.BytesPerSector * 3); 3273 3277 } 3274 3278 … … 3335 3339 static void SetFatEntry(PVOLINFO pVolInfo, ULONG ulCluster, ULONG ulValue) 3336 3340 { 3337 SetFatEntryEx(pVolInfo, pVolInfo->pbFatSector, ulCluster, ulValue, 512* 3);3341 SetFatEntryEx(pVolInfo, pVolInfo->pbFatSector, ulCluster, ulValue, pVolInfo->BootSect.bpb.BytesPerSector * 3); 3338 3342 } 3339 3343 … … 3482 3486 ReleaseFat(pVolInfo); 3483 3487 return ulTotalFree; 3484 3485 3488 } 3486 3489 /****************************************************************** … … 3741 3744 BOOL UpdateFSInfo(PVOLINFO pVolInfo) 3742 3745 { 3743 static BYTE bSector[SECTOR_SIZE] = "";3746 PBYTE bSector; 3744 3747 3745 3748 if (f32Parms.fMessageActive & LOG_FUNCS) … … 3759 3762 return TRUE; 3760 3763 3764 bSector = malloc(pVolInfo->BootSect.bpb.BytesPerSector); 3765 3761 3766 if (!ReadSector(pVolInfo, pVolInfo->BootSect.bpb.FSinfoSec, 1, bSector, DVIO_OPNCACHE)) 3762 3767 { 3763 3768 memcpy(bSector + FSINFO_OFFSET, pVolInfo->pBootFSInfo, sizeof (BOOTFSINFO)); 3764 3769 if (!WriteSector(pVolInfo, pVolInfo->BootSect.bpb.FSinfoSec, 1, bSector, DVIO_OPNCACHE | DVIO_OPWRTHRU)) 3770 { 3771 free(bSector); 3765 3772 return TRUE; 3773 } 3766 3774 } 3767 3775 CritMessage("UpdateFSInfo for %c: failed!", pVolInfo->bDrive + 'A'); 3768 3776 Message("ERROR: UpdateFSInfo for %c: failed!", pVolInfo->bDrive + 'A'); 3769 3777 3778 free(bSector); 3770 3779 return FALSE; 3771 3780 } … … 3789 3798 if (pVolInfo->ulCurFatSector != 0) 3790 3799 { 3791 if (ReadFatSector(pVolInfo, 0)) //// floppy3800 if (ReadFatSector(pVolInfo, 0)) 3792 3801 return FALSE; 3793 3802 pVolInfo->ulCurFatSector = 0; … … 4000 4009 4001 4010 // prevent blocking in FSH_SETVOLUME when remounting after format 4002 if (! pVolInfo->fFormatInProgress)4011 /* if (! pVolInfo->fFormatInProgress && ! pVolInfo->fRemovable) 4003 4012 { 4004 4013 // check if volume is present 4005 rc = FSH_SETVOLUME(hVBP, 0); //// hang on diskette insert 4014 Message("FSH_SETVOLUME"); 4015 rc = FSH_SETVOLUME(hVBP, 0); 4006 4016 4007 4017 if (rc == ERROR_VOLUME_CHANGED) 4008 4018 return NULL; 4009 } 4019 } */ 4010 4020 4011 4021 rc = MY_PROBEBUF(PB_OPWRITE, (PBYTE)pVolInfo, sizeof (VOLINFO)); -
TabularUnified trunk/src/ifs/helpers.asm ¶
r216 r230 1 1 .386p 2 2 3 SAS_SEL equ 70h3 ;SAS_SEL equ 70h 4 4 ERROR_NOT_SUPPORTED equ 50 5 5 ERROR_INVALID_PARAMETER equ 87 … … 106 106 _TEXT segment word public 'CODE' use16 107 107 108 public _SaSSel109 110 SaSSel PROC111 mov ax,SAS_SEL112 ret113 SaSSel ENDP108 ;public _SaSSel 109 110 ;SaSSel PROC 111 ; mov ax,SAS_SEL 112 ; ret 113 ;SaSSel ENDP 114 114 115 115 _TEXT ends -
TabularUnified trunk/src/ifs/ifscache.c ¶
r213 r230 48 48 PRIVATE USHORT WriteCacheSector(PVOLINFO pVolInfo, USHORT usCBIndex, BOOL fSetTime); 49 49 PRIVATE VOID UpdateChain(USHORT usCBIndex); 50 PRIVATE VOID vGetSectorFromCache( USHORT usCBIndex, PBYTE pbSector);51 PRIVATE VOID vReplaceSectorInCache( USHORT usCBIndex, PBYTE pbSector, BOOL fDirty);50 PRIVATE VOID vGetSectorFromCache(PVOLINFO pVolInfo, USHORT usCBIndex, PBYTE pbSector); 51 PRIVATE VOID vReplaceSectorInCache(PVOLINFO pVolInfo, USHORT usCBIndex, PBYTE pbSector, BOOL fDirty); 52 52 PRIVATE VOID LockBuffer(PCACHEBASE pBase); 53 53 PRIVATE VOID UnlockBuffer(PCACHEBASE pBase); … … 225 225 */ 226 226 fFromCache = TRUE; 227 for (usIndex = 0,p=pbData; usIndex < nSectors; usIndex++,p += (ULONG) SECTOR_SIZE)227 for (usIndex = 0,p=pbData; usIndex < nSectors; usIndex++,p += (ULONG)pVolInfo->BootSect.bpb.BytesPerSector) 228 228 { 229 229 if (!IsSectorInCache(pVolInfo, ulSector + usIndex, p)) … … 254 254 if (ulSector + usSectors > pVolInfo->BootSect.bpb.BigTotalSectors) 255 255 usSectors = (USHORT)(pVolInfo->BootSect.bpb.BigTotalSectors - ulSector); 256 pbSectors = malloc(usSectors * 512);256 pbSectors = malloc(usSectors * pVolInfo->BootSect.bpb.BytesPerSector); 257 257 } 258 258 if (!pbSectors) … … 300 300 if (!rc) 301 301 { 302 for (usIndex = 0,p=pbSectors; usIndex < usSectors; usIndex++,p+= (ULONG) SECTOR_SIZE)302 for (usIndex = 0,p=pbSectors; usIndex < usSectors; usIndex++,p+= (ULONG)pVolInfo->BootSect.bpb.BytesPerSector) 303 303 { 304 304 /* … … 325 325 if (rgfDirty[usCBIndex]) 326 326 { 327 vGetSectorFromCache( usCBIndex, p);327 vGetSectorFromCache(pVolInfo, usCBIndex, p); 328 328 } 329 329 rc2 = FSH_SEMCLEAR(&ulLockSem[usCBIndex]); /* when fFindSector returns with true it has the semaphore requested */ … … 336 336 { 337 337 f32Parms.ulTotalRA += usSectors > nSectors ? (usSectors - nSectors) : 0; 338 memcpy(pbData, pbSectors, min( usSectors, nSectors ) * 512);338 memcpy(pbData, pbSectors, min( usSectors, nSectors ) * pVolInfo->BootSect.bpb.BytesPerSector); 339 339 } 340 340 … … 387 387 if (!rc) 388 388 { 389 for (usIndex = 0,p= pbData; usIndex < usSectors; usIndex++,p+= (ULONG) SECTOR_SIZE)389 for (usIndex = 0,p= pbData; usIndex < usSectors; usIndex++,p+= (ULONG)pVolInfo->BootSect.bpb.BytesPerSector) 390 390 { 391 391 fSectorInCache = … … 406 406 407 407 pCache = GetAddress(usCBIndex); 408 fIdent = memcmp(p, pCache->bSector, SECTOR_SIZE) == 0;408 fIdent = memcmp(p, pCache->bSector, pVolInfo->BootSect.bpb.BytesPerSector) == 0; 409 409 } 410 410 411 411 if( !fIdent ) 412 vReplaceSectorInCache( usCBIndex, p, fDirty);412 vReplaceSectorInCache(pVolInfo, usCBIndex, p, fDirty); 413 413 414 414 rc2 = FSH_SEMCLEAR(&ulLockSem[usCBIndex]); /* when fFindSector returns with true it has the semaphore requested */ … … 435 435 return FALSE; 436 436 f32Parms.ulTotalHits++; 437 vGetSectorFromCache( usIndex, pbSector);437 vGetSectorFromCache(pVolInfo, usIndex, pbSector); 438 438 439 439 rc2 = FSH_SEMCLEAR(&ulLockSem[usIndex]); /* when fFindSector returns with true it has the semaphore requested */ … … 445 445 * 446 446 ******************************************************************/ 447 VOID vGetSectorFromCache( USHORT usCBIndex, PBYTE pbSector)447 VOID vGetSectorFromCache(PVOLINFO pVolInfo, USHORT usCBIndex, PBYTE pbSector) 448 448 { 449 449 PCACHEBASE pBase; … … 453 453 454 454 pCache = GetAddress(usCBIndex); 455 memcpy(pbSector, pCache->bSector, 512);455 memcpy(pbSector, pCache->bSector, pVolInfo->BootSect.bpb.BytesPerSector); 456 456 457 457 pBase->ulAccessTime = GetCurTime(); … … 537 537 pBase->bDrive = pVolInfo->bDrive; 538 538 539 vReplaceSectorInCache( usCBIndex, pbSector, fDirty);539 vReplaceSectorInCache(pVolInfo, usCBIndex, pbSector, fDirty); 540 540 541 541 rc2 = FSH_SEMCLEAR(&ulLockSem[usCBIndex]); … … 625 625 pBase->bDrive = pVolInfo->bDrive; 626 626 627 vReplaceSectorInCache( usCBIndex, pbSector, fDirty);627 vReplaceSectorInCache(pVolInfo, usCBIndex, pbSector, fDirty); 628 628 629 629 leaveFlag = TRUE; … … 647 647 * 648 648 ******************************************************************/ 649 VOID vReplaceSectorInCache( USHORT usCBIndex, PBYTE pbSector, BOOL fDirty)649 VOID vReplaceSectorInCache(PVOLINFO pVolInfo, USHORT usCBIndex, PBYTE pbSector, BOOL fDirty) 650 650 { 651 651 PCACHEBASE pBase; … … 666 666 rgfDirty[usCBIndex] = fDirty; 667 667 pCache = GetAddress(usCBIndex); 668 memcpy(pCache->bSector, pbSector, SECTOR_SIZE);668 memcpy(pCache->bSector, pbSector, pVolInfo->BootSect.bpb.BytesPerSector); 669 669 pBase->ulAccessTime = GetCurTime(); 670 670 UpdateChain(usCBIndex); … … 720 720 while (usCBIndex != FREE_SLOT) 721 721 { 722 rc2 = FSH_SEMREQUEST(&ulLockSem[usCBIndex],-1L); //// hang!722 rc2 = FSH_SEMREQUEST(&ulLockSem[usCBIndex],-1L); 723 723 pBase = pCacheBase + usCBIndex; 724 724 if (pBase->ulSector == ulSector && pBase->bDrive == bDrive) -
TabularUnified trunk/src/ifs/ifsfile.c ¶
r213 r230 455 455 //size = pVolInfo->BootSect.bpb.BigTotalSectors; 456 456 /* if a less volume than 2GB, do normal IO else sector IO */ 457 size = pVolInfo->BootSect.bpb.BigTotalSectors * SECTOR_SIZE;457 size = pVolInfo->BootSect.bpb.BigTotalSectors * pVolInfo->BootSect.bpb.BytesPerSector; 458 458 //if( size < SECTORS_OF_2GB ) 459 // size *= SECTOR_SIZE;459 // size *= pVolInfo->BootSect.bpb.BytesPerSector; 460 460 //else 461 461 // pOpenInfo->fLargeVolume = TRUE; -
TabularUnified trunk/src/ifs/ifsmount.c ¶
r217 r230 248 248 249 249 if (usDefaultRASectors == 0xFFFF) 250 pVolInfo->usRASectors = (pVolInfo->ulBlockSize / SECTOR_SIZE) * 2;250 pVolInfo->usRASectors = (pVolInfo->ulBlockSize / pVolInfo->BootSect.bpb.BytesPerSector ) * 2; 251 251 else 252 252 pVolInfo->usRASectors = usDefaultRASectors; … … 256 256 pVolInfo->usRASectors = MAX_RASECTORS; 257 257 #else 258 if (pVolInfo->usRASectors > (pVolInfo->ulBlockSize / SECTOR_SIZE) * 4)259 pVolInfo->usRASectors = (pVolInfo->ulBlockSize / SECTOR_SIZE) * 4;258 if (pVolInfo->usRASectors > (pVolInfo->ulBlockSize / pVolInfo->BootSect.bpb.BytesPerSector) * 4) 259 pVolInfo->usRASectors = (pVolInfo->ulBlockSize / pVolInfo->BootSect.bpb.BytesPerSector ) * 4; 260 260 #endif 261 261 … … 288 288 } 289 289 290 if (! pVolInfo->BootSect.bpb.BigSectorsPerFat) 291 // if partition is small 292 pVolInfo->BootSect.bpb.BigSectorsPerFat = pVolInfo->BootSect.bpb.SectorsPerFat; 293 290 294 pVolInfo->ulTotalClusters = 291 295 (pVolInfo->BootSect.bpb.BigTotalSectors - pVolInfo->ulStartOfData) / pSect->bpb.SectorsPerCluster; … … 309 313 pVolInfo->fWriteProtected = TRUE; 310 314 311 pVolInfo->fDiskCleanOnMount = pVolInfo->fDiskClean = GetDiskStatus(pVolInfo); 315 //pVolInfo->fDiskCleanOnMount = pVolInfo->fDiskClean = GetDiskStatus(pVolInfo); 316 312 317 if (!pVolInfo->fDiskCleanOnMount && f32Parms.fMessageActive & LOG_FS) 313 318 Message("DISK IS DIRTY!"); … … 319 324 /*!pVolInfo->fDiskClean ||*/ 320 325 pVolInfo->BootSect.bpb.FSinfoSec == 0xFFFF) 321 GetFreeSpace(pVolInfo); 326 { 327 GetFreeSpace(pVolInfo); 328 } 322 329 323 330 pDevCaps = pvpfsi->vpi_pDCS; … … 329 336 pDevCaps = ReturnDriverCaps(pvpfsi->vpi_unit); 330 337 } 338 339 if ( pVolChars && (pVolChars->VolDescriptor & VC_REMOVABLE_MEDIA) ) 340 pVolInfo->fRemovable = TRUE; 341 342 if (! pVolInfo->fRemovable) 343 pVolInfo->fDiskCleanOnMount = pVolInfo->fDiskClean = GetDiskStatus(pVolInfo); 344 else 345 // ignore disk status on floppies 346 pVolInfo->fDiskCleanOnMount = pVolInfo->fDiskClean = TRUE; 331 347 332 348 if (f32Parms.fMessageActive & LOG_FS) … … 367 383 hDupVBP = 0; 368 384 369 if (pvpfsi->vpi_bsize != SECTOR_SIZE)370 {371 rc = ERROR_VOLUME_NOT_MOUNTED;372 goto FS_MOUNT_EXIT;373 }385 //if (pvpfsi->vpi_bsize != SECTOR_SIZE) 386 // { 387 // rc = ERROR_VOLUME_NOT_MOUNTED; 388 // goto FS_MOUNT_EXIT; 389 // } 374 390 375 391 pVolInfo = gdtAlloc(STORAGE_NEEDED, FALSE); … … 493 509 usFlushVolume( pVolInfo, FLUSH_DISCARD, TRUE, PRIO_URGENT ); 494 510 UpdateFSInfo(pVolInfo); 495 MarkDiskStatus(pVolInfo, pVolInfo->fDiskCleanOnMount); 511 512 if (! pVolInfo->fRemovable) 513 { 514 // ignore dirty status on floppies 515 MarkDiskStatus(pVolInfo, pVolInfo->fDiskCleanOnMount); 516 } 496 517 497 518 // delete pVolInfo from the list … … 594 615 } 595 616 596 if (pbpb->BytesPerSector != SECTOR_SIZE)597 {598 return FAT_TYPE_NONE;599 }617 //if (pbpb->BytesPerSector != SECTOR_SIZE) 618 // { 619 // return FAT_TYPE_NONE; 620 // } 600 621 601 622 if (! pbpb->SectorsPerCluster) … … 672 693 673 694 #pragma optimize("eglt",off) 695 696 #define SAS_SEL 0x70 674 697 675 698 P_DriverCaps ReturnDriverCaps(UCHAR ucUnit) … … 684 707 struct SysDev far *pDD; 685 708 686 SAS_selector = S aSSel();709 SAS_selector = SAS_SEL; 687 710 pSas = (struct SAS far *)MAKEP(SAS_selector,0); 688 711 pDDSection = (struct SAS_dd_section far *)MAKEP(SAS_selector,pSas->SAS_dd_data); -
TabularUnified trunk/src/include/fat32.h ¶
r229 r230 21 21 PTRACKLAYOUT pTrack; 22 22 ULONG ulStartOfFAT; 23 PBYTE pbFATSector[SECTOR_SIZE * 3];23 PBYTE pbFATSector[SECTOR_SIZE * 8 * 3]; 24 24 ULONG ulCurFATSector; 25 25 PBYTE pbCluster; -
TabularUnified trunk/src/include/fat32ifs.h ¶
r229 r230 106 106 typedef struct _Cache 107 107 { 108 BYTE bSector[SECTOR_SIZE ];108 BYTE bSector[SECTOR_SIZE * 8]; 109 109 } CACHE, *PCACHE; 110 110 … … 168 168 STRATFUNC pfnPriority; 169 169 BOOL fFormatInProgress; 170 BOOL fRemovable; 170 171 UCHAR bFatType; 171 172 ULONG ulFatEof; … … 411 412 412 413 413 #define STORAGE_NEEDED (sizeof (VOLINFO) + sizeof (BOOTFSINFO) + SECTOR_SIZE * 3 + 10000)414 #define STORAGE_NEEDED (sizeof (VOLINFO) + sizeof (BOOTFSINFO) + SECTOR_SIZE * 8 * 3 + 10000) 414 415 415 416 -
TabularUnified trunk/src/ufat32/chkdsk.c ¶
r229 r230 136 136 ULONG rc = 0; 137 137 PCDINFO pCD; 138 BYTE bSector[ 512];138 BYTE bSector[SECTOR_SIZE * 8]; 139 139 struct extbpb dp; 140 140 … … 705 705 } 706 706 707 nSectors = BLOCK_SIZE / 512;707 nSectors = BLOCK_SIZE / pCD->BootSect.bpb.BytesPerSector; 708 708 if ((ULONG)nSectors > pCD->BootSect.bpb.BigSectorsPerFat - ulSector) 709 709 nSectors = (USHORT)(pCD->BootSect.bpb.BigSectorsPerFat - ulSector); … … 1930 1930 } 1931 1931 1932 if (pbpb->BytesPerSector != SECTOR_SIZE)1933 {1934 return FAT_TYPE_NONE;1935 }1932 //if (pbpb->BytesPerSector != SECTOR_SIZE) 1933 // { 1934 // return FAT_TYPE_NONE; 1935 // } 1936 1936 1937 1937 if (! pbpb->SectorsPerCluster) … … 2001 2001 ULONG GetFatEntrySec(PCDINFO pCD, ULONG ulCluster) 2002 2002 { 2003 return GetFatEntryBlock(pCD, ulCluster, 512* 3); // in three sector blocks2003 return GetFatEntryBlock(pCD, ulCluster, pCD->BootSect.bpb.BytesPerSector * 3); // in three sector blocks 2004 2004 } 2005 2005 … … 2036 2036 ULONG GetFatEntriesPerSec(PCDINFO pCD) 2037 2037 { 2038 return GetFatEntriesPerBlock(pCD, 512* 3);2038 return GetFatEntriesPerBlock(pCD, pCD->BootSect.bpb.BytesPerSector * 3); 2039 2039 } 2040 2040 … … 2091 2091 ULONG GetFatEntry(PCDINFO pCD, ULONG ulCluster) 2092 2092 { 2093 return GetFatEntryEx(pCD, pCD->pbFATSector, ulCluster, 512* 3);2093 return GetFatEntryEx(pCD, pCD->pbFATSector, ulCluster, pCD->BootSect.bpb.BytesPerSector * 3); 2094 2094 } 2095 2095 … … 2157 2157 void SetFatEntry(PCDINFO pCD, ULONG ulCluster, ULONG ulValue) 2158 2158 { 2159 SetFatEntryEx(pCD, pCD->pbFATSector, ulCluster, ulValue, 512* 3);2159 SetFatEntryEx(pCD, pCD->pbFATSector, ulCluster, ulValue, pCD->BootSect.bpb.BytesPerSector * 3); 2160 2160 } 2161 2161 -
TabularUnified trunk/src/ufat32/recover.c ¶
r213 r230 25 25 HANDLE hFile; 26 26 ULONG ulAction; 27 BYTE bSector[ 512];27 BYTE bSector[SECTOR_SIZE * 8]; 28 28 char szTarget[0x8000]; 29 29 ULONG ulBytes;
Note:
See TracChangeset
for help on using the changeset viewer.