Я отлаживал программное обеспечение для карты PCI-Express, разработанное нашей компанией. Иногда программное обеспечение начинает «зависать», собирает меньше образцов или даже на некоторое время прекращает сбор. (около полсекунды, не постоянное значение)
У нас есть драйвер режима ядра, который функционирует между программным обеспечением и картой PCI. Я начал изучать драйвер, и когда сборка останавливается, я вижу странное сообщение в отладчике (непосредственное окно VS отладчика), которое я там не поместил. Он также присутствует не во всем исходном коде нашего драйвера, поэтому он должен быть отправлен некоторыми средствами ядра Windows. Сообщение:
CORE EH: для устройства 0 запрос 8EE6EA58 [0x35] тайм-аут в слоте (0x6) при активном = 0x0.
Я не смог найти ничего полезного в Google. Кто-нибудь когда-нибудь сталкивался с этим сообщением об ошибке? Мне нужно выяснить, что это значит и что вызывает.
На карте PCI-E используется микросхема PLX8311, которая может иметь какое-то отношение к проблеме, поскольку предыдущая версия карты с другим чипом (PLX9056) не создавала эту проблему. Я не уверен, однако, поэтому я не размещаю это на их форумах.
Не уверен, что полезно, но:
Я использую этот код для отправки сообщений из ядра:
#define LocalDebugPrint(l, ...) DbgPrintEx(DPFLTR_IHVDRIVER_ID, l, __VA_ARGS__)
Дополнительный вопрос: есть ли способ получить имя компонента (здесь DPFLTR_IHVDRIVER_ID) в непосредственном окне отладчика Visual Studio?