PipSetDependency
NTSTATUS __stdcall PipSetDependency(PNP_BINDING_RESOLUTION *Dependent, PNP_BINDING_REQUEST *Request){
_PNP_DEPENDENCY_NODE *BindingResolution;
PNP_DEPENDENCY_NODE *DependencyNode;
NTSTATUS v6;
_PNP_DEPENDENCY_NODE *v7;
PNP_DEPENDENCY_NODE *v8;
bool v9;
BindingResolution = PipQueryBindingResolution(Dependent);
DependencyNode = BindingResolution;
if( BindingResolution )
{
++BindingResolution[22];
}
else
{
DependencyNode = (PNP_DEPENDENCY_NODE *)PipCreateDependencyNode(Dependent);
if( !DependencyNode )
return -1073741670;
}
v7 = PipQueryBindingResolution(Request);
v8 = v7;
if( v7 )
{
++v7[22];
goto LABEL_9;
}
v8 = (PNP_DEPENDENCY_NODE *)PipCreateDependencyNode(Request);
if( v8 )
{
LABEL_9:
v6 = PipAddDependencyEdgeBetweenNodes(DependencyNode, v8, Request);
goto LABEL_10;
}
v6 = -1073741670;
LABEL_10:
v9 = DependencyNode[22]-- == 1;
if( v9 )
PipDeleteDependencyNode(DependencyNode);
if( v8 )
{
v9 = v8[22]-- == 1;
if( v9 )
PipDeleteDependencyNode(v8);
}
return v6;
}Referenced by:
IoReserveDependency
IoSetDependency
PipConvertResolutionsToReservations