Исчезает символическая ссылка водителя

В моем драйвере Windows UMDF я создаю символическую ссылку на мое устройство в \DosDevices\Global\ каталог для отслеживания экземпляров устройства. Так что, если устройство подключается к хосту символическая ссылка \DosDevices\Global\MyDevice0 создается. Если к другому устройству подключается символическая ссылка \DosDevices\Global\MyDevice1 создается. Я достигаю этого с помощью следующего кода:

int symbolicLinkIndex = 0;
for (symbolicLinkIndex = 0; symbolicLinkIndex < 127; symbolicLinkIndex++) // 127 max usb devices
{
swprintf(m_SymbolicLinkName,
L"\\DosDevices\\Global\\MyDevice%d",
symbolicLinkIndex);

hr = m_FxDevice->CreateSymbolicLinkA(m_SymbolicLinkName);
if (FAILED(hr))
{
// Symbolic link already exists try next index
if (HRESULT_CODE(hr) == ERROR_ALREADY_EXISTS || HRESULT_CODE(hr) == ERROR_FILE_EXISTS)
continue;
else
{
TraceEvents(TRACE_LEVEL_ERROR, TRACE_DEVICE, "%!FUNC! Failed to create symbolic link: %lu", hr);
goto Exit;
}
}
else
{
TraceEvents(TRACE_LEVEL_INFORMATION, TRACE_DEVICE, "%!FUNC! Created symbolic link: %S", m_SymbolicLinkName);
break;
}
}

Методическая документация: IWDFDevice :: CreateSymbolicLink

Это работает, если я быстро соединяю два устройства друг за другом. Однако кажется, что если я подожду около 10 секунд и подключу третье устройство, оно получит символическую ссылку \DosDevices\Global\MyDevice0 чего не должно произойти, потому что первое устройство уже получило индекс 0 и все еще подключен.

Так почему же кажется, что символическая ссылка удаляется через некоторое время? Также мне интересно, подходит ли мой подход для подсчета экземпляров устройства?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]