NtRegisterThreadTerminatePort
NTSTATUS __stdcall NtRegisterThreadTerminatePort(VOID *PortHandle){
_ETHREAD *CurrentThread;
NTSTATUS result;
_TERMINATION_PORT *PoolWithQuotaTag;
_TERMINATION_PORT *v4;
PADAPTER_OBJECT DmaAdapter;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
DmaAdapter = 0i64;
result = ObReferenceObjectByHandle(
PortHandle,
1ui64,
LpcPortObjectType,
CurrentThread->Tcb.PreviousMode,
(VOID **)&DmaAdapter,
0i64);
if( result >= 0 )
{
PoolWithQuotaTag = (_TERMINATION_PORT *)ExAllocatePoolWithQuotaTag((POOL_TYPE)9, 0x10ui64, 0x70547350ui64);
v4 = PoolWithQuotaTag;
if( PoolWithQuotaTag )
{
PoolWithQuotaTag->Port = DmaAdapter;
PoolWithQuotaTag->Next = CurrentThread->TerminationPort;
result = 0;
CurrentThread->TerminationPort = v4;
}
else
{
HalPutDmaAdapter(DmaAdapter);
return -1073741670;
}
}
return result;
}Referenced by:
No references.