PiSwRemovePdoAssociation
NTSTATUS __stdcall PiSwRemovePdoAssociation(PI_SWD_OBJECT *SwDeviceObject, _DEVICE_OBJECT *ChildDeviceObject){
NTSTATUS v2;
PI_SWD_PDO_ASSOCIATION *PdoAssociation;
__int64 v4;
PI_SWD_PDO_ASSOCIATION **v5;
__int64 v6;
PI_SWD_PDO_ASSOCIATION **v7;
v2 = 0;
PdoAssociation = (PI_SWD_PDO_ASSOCIATION *)PiSwFindPdoAssociation(
(__int64)SwDeviceObject,
(__int64)ChildDeviceObject,
0);
if( !PdoAssociation )
return -1073741275;
v4 = *(_QWORD *)PdoAssociation;
if( *(PI_SWD_PDO_ASSOCIATION **)(*(_QWORD *)PdoAssociation + 8i64) != PdoAssociation
|| (v5 = (PI_SWD_PDO_ASSOCIATION **)*((_QWORD *)PdoAssociation + 1), *v5 != PdoAssociation)
|| (*v5 = (PI_SWD_PDO_ASSOCIATION *)v4,
*(_QWORD *)(v4 + 8) = v5,
v6 = *((_QWORD *)PdoAssociation + 2),
*(PI_SWD_PDO_ASSOCIATION **)(v6 + 8) != PdoAssociation + 4)
|| (v7 = (PI_SWD_PDO_ASSOCIATION **)*((_QWORD *)PdoAssociation + 3), *v7 != PdoAssociation + 4) )
{
__fastfail(3u);
}
*v7 = (PI_SWD_PDO_ASSOCIATION *)v6;
*(_QWORD *)(v6 + 8) = v7;
PiSwPdoAssociationFree(PdoAssociation);
return v2;
}Referenced by:
PiSwUnassociateDeviceObject