SiGetSystemDeviceName
NTSTATUS __stdcall SiGetSystemDeviceName(
INT64 *QueryRoutine,
_FIRMWARE_TYPE a2,
WCHAR **a3,
WCHAR *String,
INT64 Size,
UINT64 *BytesWritten,
INT64 a5,
INT64 a6,
INT64 a7,
INT64 a8){
size_t v11;
VOID *v12;
unsigned int v14;
int v15;
NTSTATUS v16;
__int64 v17;
size_t v18;
VOID *Src;
size_t v21;
WCHAR *v22;
__int128 v23;
__int128 v24;
v11 = (unsigned int)a3;
v12 = *(VOID **)&a2;
v22 = String;
*(_DWORD *)String = 0;
Src = 0i64;
v23 = 0i64;
v24 = 0i64;
v14 = 1;
ZwQuerySystemInformation();
if( v15 >= 0 )
{
v14 = 0;
if( (int)v24 < 3 )
v14 = v24;
}
v16 = ((__int64(__fastcall *)(_QWORD, VOID **))QueryRoutine)(v14, &Src);
if( v16 >= 0 )
{
v17 = -1i64;
do
++v17;
while( *((_WORD *)Src + v17) );
v18 = 2 * v17 + 2;
v21 = v18;
if( v12 && v11 >= v18 )
{
v16 = 0;
memmove(v12, Src, v18);
}
else
{
v16 = -1073741789;
}
*(_DWORD *)String = v18;
}
if( Src )
ExFreePoolWithTag(Src, 0);
return v16;
}Referenced by:
No references.