Context Navigation


Changeset 146


Ignore:
Timestamp:
Oct 26, 2016, 8:42:51 AM (9 years ago)
Author:
Valery V. Sedletski
Message:

fat32.ifs: Some previously uncommitted changes flush (FS_IOCTL code didn't went through, for some reason).

File:
1 edited

Legend:

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

    r145 r146
    15131513PVOLINFO pVolInfo;
    15141514ULONG hDEV;
    1515(追記) PBIOSPARAMETERBLOCK pBPB; (追記ここまで)
    15151516
    15161517 _asm push es;
    15641565 if (cbParm > 0)
    15651566 {
    1566 rc = MY_PROBEBUF(PB_OP(削除) WRITE (削除ここまで), pParm, cbParm);
    1567 rc = MY_PROBEBUF(PB_OP(追記) READ (追記ここまで), pParm, cbParm);
    15671568 if (rc)
    15681569 {
    15741575 if (pcbParm)
    15751576 {
    1576 rc = MY_PROBEBUF(PB_OP(削除) WRITE (削除ここまで), (PBYTE)pcbParm, sizeof (unsigned));
    1577 rc = MY_PROBEBUF(PB_OP(追記) READ (追記ここまで), (PBYTE)pcbParm, sizeof (unsigned));
    15771578 if (rc)
    15781579 pcbParm = NULL;
    15901591 {
    15911592 case IOCTL_DISK :
    1593(追記) Message("pVolInfo->fLocked=%u, pVolInfo->ulOpenFiles=%lx", pVolInfo->fLocked, pVolInfo->ulOpenFiles); (追記ここまで)
    15921594 switch (usFunc)
    15931595 {
    15941596 case DSK_LOCKDRIVE:
    1595 cbParm = sizeof(UCHAR);
    1596 if (pcbParm)
    1597 {
    1598 *pcbParm = cbParm;
    1599 }
    1600 cbData = sizeof(UCHAR);
    1601 if (pcbData)
    1602 {
    1603 *pcbData = cbData;
    1604 }
    1605 hDEV = GetVolDevice(pVolInfo);
    1606 rc = FSH_DOVOLIO2(hDEV, psffsi->sfi_selfsfn,
    1607 usCat, usFunc, pParm, cbParm, pData, cbData);
    1608 if (rc == NO_ERROR)
    1609 {
    1610 pVolInfo->fLocked = TRUE;
    1611 GetProcInfo(&pVolInfo->ProcLocked, sizeof (PROCINFO));
    1612 }
    1613 break;
    1597 if (pVolInfo->fLocked)
    1598 {
    1599 Message("Drive locked, pVolInfo->fLocked=%lu", pVolInfo->fLocked);
    1600 rc = ERROR_DRIVE_LOCKED;
    1601 goto FS_IOCTLEXIT;
    1602 }
    1603 if (pVolInfo->ulOpenFiles > 1L)
    1604 {
    1605 Message("Cannot lock, %lu open files", pVolInfo->ulOpenFiles);
    1606 rc = ERROR_DRIVE_LOCKED;
    1607 goto FS_IOCTLEXIT;
    1608 }
    1609
    1610 hDEV = GetVolDevice(pVolInfo);
    1611 rc = FSH_DOVOLIO2(hDEV, psffsi->sfi_selfsfn,
    1612 usCat, usFunc, pParm, cbParm, pData, cbData);
    1613
    1614 if (!rc) {
    1615 pVolInfo->fLocked = TRUE;
    1616
    1617 if (pcbData) {
    1618 *pcbData = cbData;
    1619 }
    1620
    1621 if (pcbParm) {
    1622 *pcbParm = cbParm;
    1623 }
    1624 }
    1625
    1626 GetProcInfo(&pVolInfo->ProcLocked, sizeof (PROCINFO));
    1627 break;
    16141628
    16151629 case DSK_UNLOCKDRIVE:
    1616 cbParm = sizeof(UCHAR);
    1617 if (pcbParm)
    1618 {
    1619 *pcbParm = cbParm;
    1620 }
    1621 cbData = sizeof(UCHAR);
    1622 if (pcbData)
    1623 {
    1624 *pcbData = cbData;
    1625 }
    1626 hDEV = GetVolDevice(pVolInfo);
    1627 rc = FSH_DOVOLIO2(hDEV, psffsi->sfi_selfsfn,
    1628 usCat, usFunc, pParm, cbParm, pData, cbData);
    1629 if (rc == NO_ERROR)
    1630 {
    1630 hDEV = GetVolDevice(pVolInfo);
    1631 rc = FSH_DOVOLIO2(hDEV, psffsi->sfi_selfsfn,
    1632 usCat, usFunc, pParm, cbParm, pData, cbData);
    1633
    1634 if (!rc) {
    1635
    1636 if (pcbData) {
    1637 *pcbData = cbData;
    1638 }
    1639
    1640 if (pcbParm) {
    1641 *pcbParm = cbParm;
    1642 }
    1643
    1644 if (pVolInfo->fLocked)
    1645 {
    16311646 pVolInfo->fLocked = FALSE;
    1632 }
    1633 break;
    1634
    1635 case DSK_BLOCKREMOVABLE:
    1636 cbParm = 2*sizeof(UCHAR);
    1637 if (pcbParm)
    1638 {
    1639 *pcbParm = cbParm;
    1640 }
    1641 cbData = sizeof(UCHAR);
    1642 if (pcbData)
    1643 {
    1644 *pcbData = cbData;
    1645 }
    1646 hDEV = GetVolDevice(pVolInfo);
    1647 rc = FSH_DOVOLIO2(hDEV, psffsi->sfi_selfsfn,
    1648 usCat, usFunc, pParm, cbParm, pData, cbData);
    1649 break;
    1647 //rc = 0;
    1648 }
    1649 //else
    1650 // rc = ERROR_INVALID_PARAMETER;
    1651 }
    1652 break;
    1653
    1654 case DSK_BLOCKREMOVABLE :
    1655 //if (pcbData)
    1656 // *pcbData = sizeof (BYTE);
    16501657
    16511658 hDEV = GetVolDevice(pVolInfo);
    16741681 rc = ERROR_NOT_DOS_DISK;
    16751682 else if (rc)
    1676 rc = 0;(削除) (削除ここまで)
    1683 rc = 0;(追記) (追記ここまで)
    16771684
    16781685 if (pData)
    17051712 *(PWORD)pData = 0x0006;
    17061713
    1714(追記) Message("DSK_GETLOCKSTATUS, rc=%u", rc); (追記ここまで)
    17071715 rc = 0;
    17081716 break;
    17231731 *pcbParm = cbParm;
    17241732 }
    1733(追記) (追記ここまで)
    1734(追記) pBPB = (PBIOSPARAMETERBLOCK)pData; (追記ここまで)
    1735(追記) (追記ここまで)
    1736(追記) pBPB->bSectorsPerCluster = pVolInfo->BootSect.bpb.SectorsPerCluster; (追記ここまで)
    1737(追記) pBPB->usReservedSectors = pVolInfo->BootSect.bpb.ReservedSectors; (追記ここまで)
    1738(追記) pBPB->cFATs = pVolInfo->BootSect.bpb.NumberOfFATs; (追記ここまで)
    1739(追記) pBPB->cRootEntries = (USHORT)(GetChainSize(pVolInfo, pVolInfo->BootSect.bpb.RootDirStrtClus) * 128); (追記ここまで)
    1740(追記) if (pVolInfo->BootSect.bpb.BigSectorsPerFat < 0x10000L) (追記ここまで)
    1741(追記) pBPB->usSectorsPerFAT = (USHORT)pVolInfo->BootSect.bpb.BigSectorsPerFat; (追記ここまで)
    1742(追記) else (追記ここまで)
    1743(追記) pBPB->usSectorsPerFAT = 0xFFFF; // ??? vs! (追記ここまで)
    17251744 }
    1726 cbData = sizeof(BIOSPARAMETERBLOCK);
    1727 if (pcbData)
    1728 {
    1729 *pcbData = cbData;
    1730 }
    1731 hDEV = GetVolDevice(pVolInfo);
    1732 rc = FSH_DOVOLIO2(hDEV, psffsi->sfi_selfsfn,
    1733 usCat, usFunc, pParm, cbParm, pData, cbData);
    1734
    1735 if (rc == NO_ERROR)
    1736 {
    1737 PBIOSPARAMETERBLOCK pBPB = (PBIOSPARAMETERBLOCK)pData;
    1738
    1739 pBPB->bSectorsPerCluster = pVolInfo->BootSect.bpb.SectorsPerCluster;
    1740 pBPB->usReservedSectors = pVolInfo->BootSect.bpb.ReservedSectors;
    1741 pBPB->cFATs = pVolInfo->BootSect.bpb.NumberOfFATs;
    1742 pBPB->cRootEntries = (USHORT)(GetChainSize(pVolInfo, pVolInfo->BootSect.bpb.RootDirStrtClus) * 128);
    1743 if (pVolInfo->BootSect.bpb.BigSectorsPerFat < 0x10000UL)
    1744 pBPB->usSectorsPerFAT = (USHORT)pVolInfo->BootSect.bpb.BigSectorsPerFat;
    1745 else
    1746 pBPB->usSectorsPerFAT = 0xFFFF;
    1747 }
    1745
    17481746 break;
    1749(削除) (削除ここまで)
    17501747
    17511748 default :
    17531750 rc = FSH_DOVOLIO2(hDEV, psffsi->sfi_selfsfn,
    17541751 usCat, usFunc, pParm, cbParm, pData, cbData);
    1752(追記) (追記ここまで)
    1753(追記) if (!rc) { (追記ここまで)
    1754(追記) if (pcbData) { (追記ここまで)
    1755(追記) *pcbData = cbData; (追記ここまで)
    1756(追記) } (追記ここまで)
    1757(追記) (追記ここまで)
    1758(追記) if (pcbParm) { (追記ここまで)
    1759(追記) *pcbParm = cbParm; (追記ここまで)
    1760(追記) } (追記ここまで)
    1761(追記) } (追記ここまで)
    1762(追記) (追記ここまで)
    1763(追記) //Message("usFunc=default, cat=%u, func=%u rc=%u", usCat, usFunc, rc); (追記ここまで)
    17551764 break;
    17561765 }
    19901999 rc = FSH_DOVOLIO2(hDEV, psffsi->sfi_selfsfn,
    19912000 usCat, usFunc, pParm, cbParm, pData, cbData);
    2001(追記) (追記ここまで)
    2002(追記) if (!rc) { (追記ここまで)
    2003(追記) if (pcbData) { (追記ここまで)
    2004(追記) *pcbData = cbData; (追記ここまで)
    2005(追記) } (追記ここまで)
    2006(追記) (追記ここまで)
    2007(追記) if (pcbParm) { (追記ここまで)
    2008(追記) *pcbParm = cbParm; (追記ここまで)
    2009(追記) } (追記ここまで)
    2010(追記) } (追記ここまで)
    2011(追記) (追記ここまで)
    19922012 break;
    19932013 }
Note: See TracChangeset for help on using the changeset viewer.

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