mirror of
https://github.com/reactos/reactos.git
synced 2025-08-02 05:55:42 +00:00
Correct test for MmSizeOfMdl
svn path=/trunk/; revision=9187
This commit is contained in:
parent
9e797fd74b
commit
87b81bac7c
1 changed files with 43 additions and 23 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue