IoGetLegacyVetoList
NTSTATUS __stdcall IoGetLegacyVetoList(
WCHAR **VetoList,
PNP_VETO_TYPE *VetoType,
INT64 a3,
INT64 a4,
INT64 a5,
INT64 a6,
INT64 a7,
INT64 a8){
bool v10;
NTSTATUS result;
const VOID *VetoName[2];
_IO_GET_LEGACY_VETO_LIST_CONTEXT Context[2];
int v14;
int v15;
PNP_VETO_TYPE *v16;
NTSTATUS *v17;
NTSTATUS v18;
v15 = 0;
HIDWORD(VetoName[0]) = 0;
if( VetoList )
*VetoList = 0i64;
v10 = *(&PnpReplaceEvent + 6004) == 0;
*VetoType = PNP_VetoTypeUnknown;
v18 = 0;
if( v10 )
return 0;
*(_QWORD *)Context = VetoList;
v17 = &v18;
v14 = 0;
v16 = VetoType;
IopGetLegacyVetoListDrivers(Context);
result = v18;
if( v18 < 0 )
goto LABEL_14;
if( *VetoType == PNP_VetoTypeUnknown )
{
PpDevNodeLockTree(PPL_SIMPLE_READ);
IopGetLegacyVetoListDeviceNode(*(&PnpReplaceEvent + 831), Context);
PpDevNodeUnlockTree(PPL_SIMPLE_READ);
result = v18;
}
if( result < 0 )
goto LABEL_14;
if( *VetoType && VetoList )
{
LODWORD(VetoName[0]) = 0x20000;
VetoName[1] = &dword_1407CF120;
IopAppendLegacyVeto((const VOID ***)Context, VetoName);
result = v18;
}
if( result < 0 )
{
LABEL_14:
if( VetoList )
{
if( *VetoList )
{
ExFreePoolWithTag(*VetoList, 0);
result = v18;
*VetoList = 0i64;
}
}
}
return result;
}Referenced by:
ExpQueryLegacyDriverInformation
PnpProcessQueryRemoveAndEject