Eu também tenho procurado por esclarecimentos aqui e é isso que eu encontrei.
- Não há período de pesquisa para esse contador. É incrementado conforme os descartes acontecem.
- Ele é redefinido na reinicialização. Não encontrei nenhuma documentação que afirme isso, mas não vi exceções a isso na prática.
- Não é redefinido em nenhum intervalo de tempo.
- Quando o contador atinge o valor máximo de um DWORD ( inteiro sem sinal de 32 bits ) deve ser agrupado, mas alguns da documentação do .NET indica que o valor será truncado se for maior que o valor máximo de um int de 32 bits. Então, esse comportamento varia dependendo de como você acessa o contador.
A única razão pela qual o contador permaneceria em 801 é se não houver mais descartes. As devoluções devem ser muito raras, a menos que haja um problema. Geralmente, os descartes ocorrem durante períodos de atividade de rede muito alta. Eles são mais uma indicação de problemas de buffer do que qualquer outra coisa.
FONTES:
Esta é toda a documentação do .NET.
Do mesmo link do MSDN que você postou, verá que esse contador é do tipo PERF_COUNTER_RAWCOUNT
.
Pesquisando mais informações sobre PERF_COUNTER_RAWCOUNT
, encontrei este comentário no GitHub que afirma que não há referência de tempo para esses tipos.
//
// These counters do not use any time reference
//
case NativeMethods.PERF_COUNTER_RAWCOUNT:
case NativeMethods.PERF_COUNTER_RAWCOUNT_HEX:
case NativeMethods.PERF_COUNTER_DELTA:
case NativeMethods.PERF_COUNTER_LARGE_RAWCOUNT:
case NativeMethods.PERF_COUNTER_LARGE_RAWCOUNT_HEX:
case NativeMethods.PERF_COUNTER_LARGE_DELTA:
newPdhValue.FirstValue = newSample.RawValue;
newPdhValue.SecondValue = 0;
Esta página também declara não há referência de tempo para esse contador tipo:
// Indicates the data is a counter which should not be
// time averaged on display (such as an error counter on a serial line)
// Display as is. No Display Suffix.
public const int PERF_COUNTER_RAWCOUNT =
(PERF_SIZE_DWORD | PERF_TYPE_NUMBER | PERF_NUMBER_DECIMAL |
PERF_DISPLAY_NO_SUFFIX);
E este comentário afirma que qualquer valor maior que será truncado:
/// Directly accesses the raw value of this counter. If counter type is of a 32-bit size, it will truncate
/// the value given to 32 bits. This can be significantly more performant for scenarios where
/// the raw value is sufficient. Note that this only works for custom counters created using
/// this component, non-custom counters will throw an exception if this property is accessed.
E aqui está a definição da estrutura para MibIpStats , que é retornado pela chamada do Win32 para obter as estatísticas da interface.