Context Navigation



Ignore:
Timestamp:
Aug 17, 2016, 10:16:30 AM (9 years ago)
Author:
Valery V. Sedletski
Message:

fat32.ifs: Fix a trap after FS_MOUNT on REDETERMINEMEDIA ioctl. Added push es/pop es on enter/exit of each top-level IFS routine.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/fat32-0.10/src/ifs/ifsmount.c

    r109 r115
    1818PRIVATE BOOL IsFAT32(PBOOTSECT pBoot);
    1919
    20int far pascal _loadds (削除) (削除ここまで)FS_MOUNT(unsigned short usFlag, /* flag */
    20int far pascal _loadds (追記) (追記ここまで)FS_MOUNT(unsigned short usFlag, /* flag */
    2121 struct vpfsi far * pvpfsi, /* pvpfsi */
    2222 struct vpfsd far * pvpfsd, /* pvpfsd */
    3434
    3535 _asm push es;
    36(削除) //_asm push bx; (削除ここまで)
    3736
    3837 if (f32Parms.fMessageActive & LOG_FS)
    217216 if (rc && rc != ERROR_WRITE_PROTECT)
    218217 {
    219 Message("Cannot access drive, rc = %u", rc);
    218 if (f32Parms.fMessageActive & LOG_FS)
    219 Message("Cannot access drive, rc = %u", rc);
    220220 goto FS_MOUNT_EXIT;
    221221 }
    224224
    225225 pVolInfo->fDiskCleanOnMount = pVolInfo->fDiskClean = GetDiskStatus(pVolInfo);
    226 if (!pVolInfo->fDiskCleanOnMount(削除) (削除ここまで))
    226 if (!pVolInfo->fDiskCleanOnMount(追記) && f32Parms.fMessageActive & LOG_FS (追記ここまで))
    227227 Message("DISK IS DIRTY!");
    228228 if (pVolInfo->fWriteProtected)
    239239 pVolChars = pvpfsi->vpi_pVCS;
    240240
    241 if (pDevCaps->Capabilities & GDC_DD_Read2)
    242 Message("Read2 supported");
    243 if (pDevCaps->Capabilities & GDC_DD_DMA_Word)
    244 Message("DMA on word alligned buffers supported");
    245 if (pDevCaps->Capabilities & GDC_DD_DMA_Byte)
    246 Message("DMA on byte alligned buffers supported");
    247 if (pDevCaps->Capabilities & GDC_DD_Mirror)
    248 Message("Disk Mirroring supported");
    249 if (pDevCaps->Capabilities & GDC_DD_Duplex)
    250 Message("Disk Duplexing supported");
    251 if (pDevCaps->Capabilities & GDC_DD_No_Block)
    252 Message("Strategy2 does not block");
    253 if (pDevCaps->Capabilities & GDC_DD_16M)
    254 Message(">16M supported");
    241 if (f32Parms.fMessageActive & LOG_FS)
    242 {
    243 if (pDevCaps->Capabilities & GDC_DD_Read2)
    244 Message("Read2 supported");
    245 if (pDevCaps->Capabilities & GDC_DD_DMA_Word)
    246 Message("DMA on word alligned buffers supported");
    247 if (pDevCaps->Capabilities & GDC_DD_DMA_Byte)
    248 Message("DMA on byte alligned buffers supported");
    249 if (pDevCaps->Capabilities & GDC_DD_Mirror)
    250 Message("Disk Mirroring supported");
    251 if (pDevCaps->Capabilities & GDC_DD_Duplex)
    252 Message("Disk Duplexing supported");
    253 if (pDevCaps->Capabilities & GDC_DD_No_Block)
    254 Message("Strategy2 does not block");
    255 if (pDevCaps->Capabilities & GDC_DD_16M)
    256 Message(">16M supported");
    257 }
    258
    255259 if (pDevCaps->Strategy2)
    256 {
    257 Message("Strategy2 address at %lX", pDevCaps->Strategy2);
    258 Message("ChgPriority address at %lX", pDevCaps->ChgPriority);
    260 {
    261 if (f32Parms.fMessageActive & LOG_FS)
    262 {
    263 Message("Strategy2 address at %lX", pDevCaps->Strategy2);
    264 Message("ChgPriority address at %lX", pDevCaps->ChgPriority);
    265 }
    259266
    260267 pVolInfo->pfnStrategy = (STRATFUNC)pDevCaps->Strategy2;
    261268 pVolInfo->pfnPriority = (STRATFUNC)pDevCaps->ChgPriority;
    262 (削除) (削除ここまで)}
    269 (追記) (追記ここまで)}
    263270
    264271 rc = 0;
    343350 pVolChars = pvpfsi->vpi_pVCS;
    344351
    345 if (pDevCaps->Capabilities & GDC_DD_Read2)
    346 Message("Read2 supported");
    347 if (pDevCaps->Capabilities & GDC_DD_DMA_Word)
    348 Message("DMA on word alligned buffers supported");
    349 if (pDevCaps->Capabilities & GDC_DD_DMA_Byte)
    350 Message("DMA on byte alligned buffers supported");
    351 if (pDevCaps->Capabilities & GDC_DD_Mirror)
    352 Message("Disk Mirroring supported");
    353 if (pDevCaps->Capabilities & GDC_DD_Duplex)
    354 Message("Disk Duplexing supported");
    355 if (pDevCaps->Capabilities & GDC_DD_No_Block)
    356 Message("Strategy2 does not block");
    357 if (pDevCaps->Capabilities & GDC_DD_16M)
    358 Message(">16M supported");
    352 if (f32Parms.fMessageActive & LOG_FS)
    353 {
    354 if (pDevCaps->Capabilities & GDC_DD_Read2)
    355 Message("Read2 supported");
    356 if (pDevCaps->Capabilities & GDC_DD_DMA_Word)
    357 Message("DMA on word alligned buffers supported");
    358 if (pDevCaps->Capabilities & GDC_DD_DMA_Byte)
    359 Message("DMA on byte alligned buffers supported");
    360 if (pDevCaps->Capabilities & GDC_DD_Mirror)
    361 Message("Disk Mirroring supported");
    362 if (pDevCaps->Capabilities & GDC_DD_Duplex)
    363 Message("Disk Duplexing supported");
    364 if (pDevCaps->Capabilities & GDC_DD_No_Block)
    365 Message("Strategy2 does not block");
    366 if (pDevCaps->Capabilities & GDC_DD_16M)
    367 Message(">16M supported");
    368 }
    369
    359370 if (pDevCaps->Strategy2)
    360 {
    361 Message("Strategy2 address at %lX", pDevCaps->Strategy2);
    362 Message("ChgPriority address at %lX", pDevCaps->ChgPriority);
    371 {
    372 if (f32Parms.fMessageActive & LOG_FS)
    373 {
    374 Message("Strategy2 address at %lX", pDevCaps->Strategy2);
    375 Message("ChgPriority address at %lX", pDevCaps->ChgPriority);
    376 }
    363377
    364378 pVolInfo->pfnStrategy = (STRATFUNC)pDevCaps->Strategy2;
    365379 pVolInfo->pfnPriority = (STRATFUNC)pDevCaps->ChgPriority;
    366 (削除) (削除ここまで)}
    380 (追記) (追記ここまで)}
    367381
    368382 rc = 0;
    435449 usVolCount--;
    436450 }
    437 } (削除) (削除ここまで)
    438 */
    451 } (追記) */ (追記ここまで)
    452
    439453 RemoveVolume(pVolInfo);
    440454 freeseg(pVolInfo);
    451465 Message("FS_MOUNT returned %u\n", rc);
    452466
    453(削除) //_asm int 3 (削除ここまで)
    454(削除) //_asm pop bx; (削除ここまで)
    455467 _asm pop es;
    456468
Note: See TracChangeset for help on using the changeset viewer.

AltStyle によって変換されたページ (->オリジナル) /