예제 #1
0
파일: memory.c 프로젝트: layerfsd/ffsfsd
PFFS_MCB
FFSSearchMcb(
	PFFS_VCB        Vcb,
	PFFS_MCB        Parent,
	PUNICODE_STRING FileName)
{
	PFFS_MCB TmpMcb = Parent->Child;

	while (TmpMcb)
	{
		if (!RtlCompareUnicodeString(
					&(TmpMcb->ShortName),
					FileName, TRUE))
			break;

		TmpMcb = TmpMcb->Next;
	}

	if (TmpMcb)
	{
		FFSRefreshMcb(Vcb, TmpMcb);
	}

	return TmpMcb;
}
예제 #2
0
파일: memory.c 프로젝트: GYGit/reactos
PFFS_MCB
FFSSearchMcbTree(
	PFFS_VCB Vcb,
	PFFS_MCB FFSMcb,
	ULONG    Inode)
{
	PFFS_MCB    Mcb = NULL;
	PLIST_ENTRY List = NULL;
	BOOLEAN     bFind = FALSE;

    PAGED_CODE();

	List = Vcb->McbList.Flink;

	while ((!bFind) && (List != &(Vcb->McbList)))
	{
		Mcb = CONTAINING_RECORD(List, FFS_MCB, Link);
		List = List->Flink;

		if (Mcb->Inode == Inode)
		{
			bFind = TRUE;
			break;
		}
	}

	if (bFind)
	{
		ASSERT(Mcb != NULL);
		FFSRefreshMcb(Vcb, Mcb);
	}
	else
	{
		Mcb = NULL;
	}

	return Mcb;
}