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