| 1615 | |
| 1616 | |
| 1617 | PEXT2_MCB |
| 1618 | Ext2SearchMcbWithoutLock( |
| 1619 | PEXT2_MCB Parent, |
| 1620 | PUNICODE_STRING FileName |
| 1621 | ) |
| 1622 | { |
| 1623 | PEXT2_MCB TmpMcb = NULL; |
| 1624 | |
| 1625 | DEBUG(DL_RES, ("Ext2SearchMcb: %wZ\n", FileName)); |
| 1626 | |
| 1627 | __try { |
| 1628 | |
| 1629 | Ext2ReferMcb(Parent); |
| 1630 | |
| 1631 | if (Ext2IsDot(FileName)) { |
| 1632 | TmpMcb = Parent; |
| 1633 | Ext2ReferMcb(Parent); |
| 1634 | __leave; |
| 1635 | } |
| 1636 | |
| 1637 | if (Ext2IsDotDot(FileName)) { |
| 1638 | if (IsMcbRoot(Parent)) { |
| 1639 | TmpMcb = Parent; |
| 1640 | } else { |
| 1641 | TmpMcb = Parent->Parent; |
| 1642 | } |
| 1643 | if (TmpMcb) { |
| 1644 | Ext2ReferMcb(TmpMcb); |
| 1645 | } |
| 1646 | __leave; |
| 1647 | } |
| 1648 | |
| 1649 | if (IsMcbSymLink(Parent)) { |
| 1650 | if (Parent->Target) { |
| 1651 | TmpMcb = Parent->Target->Child; |
| 1652 | ASSERT(!IsMcbSymLink(Parent->Target)); |
| 1653 | } else { |
| 1654 | TmpMcb = NULL; |
| 1655 | __leave; |
| 1656 | } |
| 1657 | } else { |
| 1658 | TmpMcb = Parent->Child; |
| 1659 | } |
| 1660 | |
| 1661 | while (TmpMcb) { |
| 1662 | |
| 1663 | if (!RtlCompareUnicodeString( |
| 1664 | &(TmpMcb->ShortName), |
| 1665 | FileName, TRUE )) { |
| 1666 | Ext2ReferMcb(TmpMcb); |
| 1667 | break; |
| 1668 | } |
| 1669 | |
| 1670 | TmpMcb = TmpMcb->Next; |
| 1671 | } |
| 1672 | |
| 1673 | } __finally { |
| 1674 |
no test coverage detected