Correct test for MmSizeOfMdl

svn path=/trunk/; revision=9187
This commit is contained in:
Jason Filby 2004-04-20 18:52:04 +00:00
parent 9e797fd74b
commit 87b81bac7c

View file

@ -5,45 +5,65 @@
static int RunTest(char *Buffer)
{
VOID *pmem1;
PHYSICAL_ADDRESS LowestAcceptableAddress, HighestAcceptableAddress, SkipBytes;
SIZE_T TotalBytes;
VOID *pmem1, *MdlPfnArray, *MdlVirtAddr;
ULONG MdlSize, MdlOffset, AllocSize;
PMDL Mdl;
/* Allocate memory for use in testing */
AllocSize = 512;
pmem1 = ExAllocatePool(NonPagedPool,
512);
AllocSize);
/* MDL Testing */
/* MmSizeOfMdl test */
MdlSize = 0;
MdlSize = MmSizeOfMdl(pmem1,
AllocSize);
if (MdlSize <= sizeof(MDL))
{
strcpy(Buffer, "MmSizeOfMdl() failed\n");
return TS_FAILED;
}
/* MmCreateMdl test */
Mdl = NULL;
Mdl = MmCreateMdl(NULL,
pmem1,
512);
AllocSize);
if (Mdl == NULL)
{
strcpy(Buffer, "MmCreateMdl() failed for Mdl\n");
return TS_FAILED;
}
MmBuildMdlForNonPagedPool(Mdl);
MmProbeAndLockPages(Mdl,
KernelMode,
IoReadAccess);
MmUnlockPages(Mdl);
ExFreePool(Mdl);
SkipBytes.QuadPart = PAGE_SIZE * 4;
TotalBytes = 4096;
Mdl = NULL;
Mdl = MmAllocatePagesForMdl(LowestAcceptableAddress,
HighestAcceptableAddress,
SkipBytes,
TotalBytes);
if (Mdl == NULL)
/* MmGetMdlByteCount test */
MdlSize = 0;
MdlSize = MmGetMdlByteCount(Mdl);
if (MdlSize != AllocSize)
{
strcpy(Buffer, "MmAllocatePagesForMdl() failed for Mdl\n");
strcpy(Buffer, "MmGetMdlByteCount() failed for Mdl\n");
return TS_FAILED;
}
/* MmGetMdlByteOffset test */
MdlOffset = MmGetMdlByteOffset(Mdl);
/* MmGetMdlPfnArray test */
MdlPfnArray = NULL;
MdlPfnArray = MmGetMdlPfnArray(Mdl);
if (MdlPfnArray == NULL)
{
strcpy(Buffer, "MmGetMdlPfnArray() failed for Mdl\n");
return TS_FAILED;
}
/* MmGetMdlVirtualAddress test */
MdlVirtAddr = NULL;
MdlVirtAddr = MmGetMdlVirtualAddress(Mdl);
if (MdlVirtAddr == NULL)
{
strcpy(Buffer, "MmGetMdlVirtualAddress() failed for Mdl\n");
return TS_FAILED;
}
MmFreePagesFromMdl(Mdl);
/* Free memory used in test */
ExFreePool(pmem1);
@ -59,7 +79,7 @@ Mdl_1Test(int Command, char *Buffer)
case TESTCMD_RUN:
return RunTest(Buffer);
case TESTCMD_TESTNAME:
strcpy(Buffer, "Kernel Memory MDL API");
strcpy(Buffer, "Kernel Memory MDL API (1)");
return TS_OK;
default:
break;