CmAddDeviceToContainer
__int64 __fastcall CmAddDeviceToContainer(__int64 a1, const WCHAR *a2, const WCHAR *a3, const WCHAR *a4, _BYTE *a5){
__int64(__fastcall *v9)(__int64, const WCHAR *, __int64);
int v10;
int v11;
int v12;
int v13;
INT64 result[2];
int v16[2];
int v17[2];
ULONG v18[16];
memset((INT64)result, 0i64);
v9 = *(__int64(__fastcall **)(__int64, const WCHAR *, __int64))(a1 + 504);
*(_QWORD *)v17 = a4;
*(_QWORD *)v16 = a3;
if( v9 )
{
v10 = v9(a1, a2, 5i64);
if( v10 == -1073741822 )
{
v9 = 0i64;
}
else
{
if( v10 == -1073741536 )
goto LABEL_15;
if( v10 )
return(unsigned int)-1073741595;
}
}
v11 = CmAddDeviceToContainerWorker(a1, a2, *(const WCHAR **)v16, *(const WCHAR **)v17, v18);
v12 = v11;
if( !v9 || (LODWORD(result[0]) = v11, v13 = v9(a1, a2, 5i64), v13 == -1073741822) )
{
LABEL_9:
if( !LOBYTE(v18[0]) )
PnpObjectRaiseDevicesChangeEvent(a1, (__int64)a2, 5i64);
goto LABEL_11;
}
if( v13 != -1073741536 )
{
if( !v13 )
goto LABEL_9;
return(unsigned int)-1073741595;
}
LABEL_15:
v12 = result[0];
LABEL_11:
if( v12 >= 0 && a5 )
*a5 = v18[0];
return(unsigned int)v12;
}Referenced by:
CmMoveBaseContainer
IopInitializePlugPlayServices
PiDcUpdateDeviceContainerMembership