CmpGetNodeName
WCHAR *__fastcall CmpGetNodeName(_HHIVE *Hive, _CM_KEY_NODE *Node, UINT16 *NameLength){
unsigned __int16 v5;
void *(__fastcall *Allocate)(unsigned int, unsigned __int8, unsigned int);
UINT16 v7;
WCHAR *v8;
WCHAR *v9;
UINT8 *v11;
if( NameLength )
*NameLength = 0;
v5 = Node->NameLength;
Allocate = Hive->Allocate;
if( (Node->Flags & 0x20) == 0 )
{
v7 = v5 + 2;
v11 = (UINT8 *)Allocate(v7, 0, 540167491u);
v9 = (WCHAR *)v11;
if( v11 )
{
memmove(v11, (UINT8 *)Node->Name, Node->NameLength);
v9[((unsigned __int64)v7 >> 1) - 1] = 0;
goto LABEL_6;
}
return 0i64;
}
v7 = 2 * (v5 + 1);
v8 = (WCHAR *)Allocate(v7, 0, 540167491u);
v9 = v8;
if( !v8 )
return 0i64;
CmpCopyCompressedName(v8, v7, Node->Name, Node->NameLength);
v9[((unsigned __int64)v7 >> 1) - 1] = 0;
LABEL_6:
if( NameLength )
*NameLength = v7;
return v9;
}Referenced by:
CmpAddDriverToList
CmpIsLoadType