PnpFinalizeVetoedRemove
VOID __stdcall PnpFinalizeVetoedRemove(
_PNP_DEVICE_EVENT_ENTRY *VetoedDeviceEvent,
_PNP_VETO_TYPE VetoType,
_UNICODE_STRING *VetoName){
_PNP_VETO_TYPE *v3;
int v4;
UNICODE_STRING *v8;
wchar_t *Buffer;
wchar_t *v10;
v3 = (_PNP_VETO_TYPE *)*((_QWORD *)VetoedDeviceEvent + 6);
v4 = 0;
if( v3 )
*v3 = VetoType;
v8 = (UNICODE_STRING *)*((_QWORD *)VetoedDeviceEvent + 7);
if( v8 && VetoName )
RtlCopyUnicodeString(v8, VetoName, VetoName);
if( (*((_DWORD *)VetoedDeviceEvent + 36) & 8) != 0 && VetoType == PNP_VetoDevice )
{
Buffer = VetoName->Buffer;
v10 = (wchar_t *)((char *)Buffer + VetoName->Length);
if( Buffer < v10 )
{
while( *Buffer != 92 || ++v4 != 3 )
{
if( ++Buffer >= v10 )
return;
}
VetoName->Length = (_WORD)Buffer - LOWORD(VetoName->Buffer);
}
}
}Referenced by:
PiCheckRemovalPreconditions
PiEventBuildPdoList
PiProcessQueryAndCancelRemoval
PnpProcessQueryRemoveAndEject