CmConvertHandleToKernelHandle
NTSTATUS __stdcall CmConvertHandleToKernelHandle(
PVOID Handle,
INT8 PreviousMode,
UINT64 DesiredAccess,
PVOID *KernelHandle){
_OBJECT_TYPE *v4;
_ACCESS_MASK v5;
int v7;
_KPROCESSOR_MODE AccessMode;
PVOID Object;
VOID **v10;
Object = (PVOID)PreviousMode;
v4 = (_OBJECT_TYPE *)CmKeyObjectType;
v5 = (int)KernelHandle;
if( Handle )
{
Object = 0i64;
v7 = ObReferenceObjectByHandle(
Handle,
(unsigned int)KernelHandle,
(_OBJECT_TYPE *)CmKeyObjectType,
DesiredAccess,
&Object,
0i64);
if( v7 >= 0 )
{
LOBYTE(AccessMode) = 0;
v7 = ObOpenObjectByPointer(Object, 0x200ui64, 0i64, v5, v4, AccessMode, v10);
HalPutDmaAdapter((PADAPTER_OBJECT)Object);
}
return v7;
}
else
{
*v10 = 0i64;
return 0;
}
}Referenced by:
CmLoadDifferencingKey
CmUnloadKey
NtSaveMergedKeys