This looks wrong to me since both lines produce different results. For example: (PBYTE)0x00000000 + 4 == (PBYTE)0x00000004 but (PLONG)0x00000000 + 4 == (PLONG)0x00000010
if ( Index < gcMaxDdHmgr ) {
pEntry = (PDD_ENTRY)((PBYTE)gpentDdHmgr + (sizeof(DD_ENTRY) * Index));
pEntry = (PDD_ENTRY)((PLONG)gpentDdHmgr + (sizeof(DD_ENTRY) * Index)); if ( VerifyObjectOwner(pEntry) ) {