mirror of
https://github.com/reactos/reactos.git
synced 2025-08-02 13:06:34 +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)
|
static int RunTest(char *Buffer)
|
||||||
{
|
{
|
||||||
VOID *pmem1;
|
VOID *pmem1, *MdlPfnArray, *MdlVirtAddr;
|
||||||
PHYSICAL_ADDRESS LowestAcceptableAddress, HighestAcceptableAddress, SkipBytes;
|
ULONG MdlSize, MdlOffset, AllocSize;
|
||||||
SIZE_T TotalBytes;
|
|
||||||
PMDL Mdl;
|
PMDL Mdl;
|
||||||
|
|
||||||
/* Allocate memory for use in testing */
|
/* Allocate memory for use in testing */
|
||||||
|
AllocSize = 512;
|
||||||
pmem1 = ExAllocatePool(NonPagedPool,
|
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 = NULL;
|
||||||
Mdl = MmCreateMdl(NULL,
|
Mdl = MmCreateMdl(NULL,
|
||||||
pmem1,
|
pmem1,
|
||||||
512);
|
AllocSize);
|
||||||
if (Mdl == NULL)
|
if (Mdl == NULL)
|
||||||
{
|
{
|
||||||
strcpy(Buffer, "MmCreateMdl() failed for Mdl\n");
|
strcpy(Buffer, "MmCreateMdl() failed for Mdl\n");
|
||||||
return TS_FAILED;
|
return TS_FAILED;
|
||||||
}
|
}
|
||||||
MmBuildMdlForNonPagedPool(Mdl);
|
|
||||||
MmProbeAndLockPages(Mdl,
|
|
||||||
KernelMode,
|
|
||||||
IoReadAccess);
|
|
||||||
MmUnlockPages(Mdl);
|
|
||||||
ExFreePool(Mdl);
|
|
||||||
|
|
||||||
SkipBytes.QuadPart = PAGE_SIZE * 4;
|
/* MmGetMdlByteCount test */
|
||||||
TotalBytes = 4096;
|
MdlSize = 0;
|
||||||
Mdl = NULL;
|
MdlSize = MmGetMdlByteCount(Mdl);
|
||||||
Mdl = MmAllocatePagesForMdl(LowestAcceptableAddress,
|
if (MdlSize != AllocSize)
|
||||||
HighestAcceptableAddress,
|
|
||||||
SkipBytes,
|
|
||||||
TotalBytes);
|
|
||||||
if (Mdl == NULL)
|
|
||||||
{
|
{
|
||||||
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;
|
return TS_FAILED;
|
||||||
}
|
}
|
||||||
MmFreePagesFromMdl(Mdl);
|
|
||||||
|
|
||||||
/* Free memory used in test */
|
/* Free memory used in test */
|
||||||
ExFreePool(pmem1);
|
ExFreePool(pmem1);
|
||||||
|
@ -59,7 +79,7 @@ Mdl_1Test(int Command, char *Buffer)
|
||||||
case TESTCMD_RUN:
|
case TESTCMD_RUN:
|
||||||
return RunTest(Buffer);
|
return RunTest(Buffer);
|
||||||
case TESTCMD_TESTNAME:
|
case TESTCMD_TESTNAME:
|
||||||
strcpy(Buffer, "Kernel Memory MDL API");
|
strcpy(Buffer, "Kernel Memory MDL API (1)");
|
||||||
return TS_OK;
|
return TS_OK;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue