| Предыдущий | Следующий |
| CID_HANDLE_DELETION | BAD_POOL_HEADER |
REFERENCE_BY_POINTER
Проверка ошибок REFERENCE_BY_POINTER имеет значение 0x00000018. Это означает, что счётчик ссылок объекта недопустим для его текущего состояния.
Важно
Параметры REFERENCE_BY_POINTER
| Параметр | Описание |
|---|---|
1 |
Тип объекта, счётчик ссылок которого уменьшается. |
2 |
Объект, счётчик ссылок которого уменьшается. |
3 |
Зарезервировано |
4 |
Зарезервировано |
Причина REFERENCE_BY_POINTER
Счётчик ссылок объекта недопустим для текущего состояния объекта. Каждый раз при использовании указателя на объект драйвер вызывает процедуру ядра, увеличивающую счётчик ссылок объекта на единицу. Завершив работу с указателем, драйвер вызывает другую процедуру ядра, уменьшающую счётчик ссылок на единицу.
Драйверы должны согласовывать вызовы процедур, которые увеличивают (добавляют ссылку) и уменьшают (удаляют ссылку) счётчик ссылок. Эта проверка ошибки вызвана несогласованностью счётчика ссылок объекта. Обычно несогласованность вызвана драйвером, который слишком много раз уменьшает счётчик ссылок объекта, выполняя лишние вызовы удаления ссылки. Проверка ошибки может возникнуть, если счётчик ссылок объекта достигает нуля, пока на объект всё ещё открыты дескрипторы. Она также может возникнуть, если счётчик ссылок объекта становится отрицательным независимо от наличия открытых дескрипторов.
Устранение REFERENCE_BY_POINTER
Убедитесь, что драйвер согласует вызовы процедур увеличения и уменьшения счётчика ссылок объекта. Убедитесь, что драйвер не выполняет лишние вызовы процедур удаления ссылки на объект, указанный параметром 2.
Для анализа REFERENCE_BY_POINTER можно использовать отладчик. Дополнительные сведения см. в разделе об анализе аварийных дампов с помощью отладчиков Windows (WinDbg). Для REFERENCE_BY_POINTER расширение !analyze выводит сведения о проверке ошибки и помогает определить первопричину.
Чтобы определить число дескрипторов и указателей на объект, используйте команду отладчика !object .
kd> !object address
Где address address — адрес объекта, указанный параметром 2.
Для REFERENCE_BY_POINTER также можно установить breakpoint в коде перед stop code и пошагово пройти до отказавшей инструкции.
Если Windows debugger недоступен, для REFERENCE_BY_POINTER можно применить базовые методы диагностики.
При анализе REFERENCE_BY_POINTER проверьте System Log в Event Viewer: дополнительные ошибки могут указать вызвавшие сбой устройство или драйвер.
Если в сообщении REFERENCE_BY_POINTER указан драйвер, отключите его либо проверьте обновления у производителя.
Для REFERENCE_BY_POINTER убедитесь, что всё недавно установленное оборудование совместимо с используемой версией Windows. Например, сведения о требованиях к оборудованию системы, затронутой
REFERENCE_BY_POINTER, можно получить в характеристиках Windows 10.Дополнительные общие сведения по устранению неполадок, относящиеся к
REFERENCE_BY_POINTER, см. в разделе «Данные синего экрана».
Нужно найти другой код? Найти другой код состояния или ошибки.
