RtlpInsertStringAtom
UINT8 __stdcall RtlpInsertStringAtom(_RTL_ATOM_TABLE *Table, _RTL_ATOM_TABLE_ENTRY *TableEntry){
VOID *Handle;
VOID *v5;
INT64 v6;
VOID *v7;
unsigned int v8;
_ETHREAD *CurrentThread;
_HANDLE_TABLE_ENTRY *v11;
const VOID *v12;
INT64 v13;
void *v14;
Handle = ExCreateHandleEx(Table->ExHandleTable, TableEntry, 0i64, 0i64, 0i64);
v7 = Handle;
if( Handle )
{
v8 = (unsigned int)Handle >> 2;
if( v8 <= 0xFFFF && v8 + 49152 >= v8 && v8 + 49152 <= 0xFFFF )
{
TableEntry->HandleIndex = v8;
TableEntry->Atom = v8 - 0x4000;
return 1;
}
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
v11 = ExMapHandleToPointer(Table->ExHandleTable, v7, v5, v6, v12, v13, v14);
ExDestroyHandle(Table->ExHandleTable, v7, v11);
KeLeaveCriticalRegionThread(KeGetCurrentThread());
}
return 0;
}Referenced by:
RtlAddAtomToAtomTableEx