NtRegisterThreadTerminatePort
NTSTATUS __stdcall NtRegisterThreadTerminatePort(PVOID PortHandle){
_ETHREAD *CurrentThread;
NTSTATUS result;
_QWORD *PoolWithQuotaTag;
_QWORD *v4;
PADAPTER_OBJECT DmaAdapter;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
DmaAdapter = 0i64;
result = ObReferenceObjectByHandle(
PortHandle,
1u,
LpcPortObjectType,
*((_BYTE *)CurrentThread + 562),
(PVOID *)&DmaAdapter,
0i64);
if( result >= 0 )
{
PoolWithQuotaTag = ExAllocatePoolWithQuotaTag((POOL_TYPE)9, 0x10ui64, 0x70547350ui64);
v4 = PoolWithQuotaTag;
if( PoolWithQuotaTag )
{
PoolWithQuotaTag[1] = DmaAdapter;
*PoolWithQuotaTag = *((_QWORD *)CurrentThread + 139);
result = 0;
*((_QWORD *)CurrentThread + 139) = v4;
}
else
{
HalPutDmaAdapter(DmaAdapter);
return -1073741670;
}
}
return result;
}Referenced by:
No references.