MCPcopy Create free account
hub / github.com/bobranten/Ext4Fsd / Ext2SearchMcbWithoutLock

Function Ext2SearchMcbWithoutLock

Ext4Fsd/memory.c:1617–1679  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1615
1616
1617PEXT2_MCB
1618Ext2SearchMcbWithoutLock(
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

Callers 2

Ext2SearchMcbFunction · 0.85
Ext2LookupFileFunction · 0.85

Calls 2

Ext2IsDotFunction · 0.85
Ext2IsDotDotFunction · 0.85

Tested by

no test coverage detected