<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум Рутокен &mdash; Получение пути до дочернего устройства]]></title>
		<link>https://forum.rutoken.ru/topic/3349/</link>
		<atom:link href="https://forum.rutoken.ru/feed/rss/topic/3349/" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Получение пути до дочернего устройства».]]></description>
		<lastBuildDate>Tue, 11 May 2021 11:34:37 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Получение пути до дочернего устройства]]></title>
			<link>https://forum.rutoken.ru/post/15560/#p15560</link>
			<description><![CDATA[<p>Я поторопился, когда сказал, что это то что нужно))<br />Нашел решение, если кому понадобиться пример ниже<br /></p><div class="codebox"><pre><code>#include &lt;iostream&gt;
#include &lt;windows.h&gt;
#include &lt;setupapi.h&gt;
#include &lt;cfgmgr32.h&gt;

int main()
{
    CONFIGRET CMResult = CR_SUCCESS;
    WCHAR DeviceInstanceID[] = L&quot;USB\\VID_0A89&amp;PID_0030\\5&amp;3B0D2CFF&amp;0&amp;7&quot;; // путь экземпляра родителя

    DEVNODE ParentDeviceNode = 0;
    CMResult = CM_Locate_DevNodeW((PDEVINST) &amp;ParentDeviceNode, DeviceInstanceID, CM_LOCATE_DEVNODE_NORMAL); // дескриптор родительского экземпляра

    if (CMResult != CR_SUCCESS)
    {
        return -1;
    }
    else
    {
        DEVINST FirstChildDeviceNode = 0;
        CMResult = CM_Get_Child((PDEVINST) &amp;FirstChildDeviceNode, ParentDeviceNode, 0x0); // Получаем первый дочерний элемент

        DEVINST SecondChildDeviceNode = 0;
        CMResult = CM_Get_Sibling((PDEVINST) &amp;SecondChildDeviceNode, FirstChildDeviceNode, 0x0); // Получаем второй дочерний элементы

        if (CMResult != CR_SUCCESS)
        {
            return -2;
        }
        else
        {
            ULONG ChildDBuffLength = 0;
            CMResult = CM_Get_Device_ID_Size(&amp;ChildDBuffLength, SecondChildDeviceNode, 0x0); // получаем размер необходимого буффера для вывода пути дочернего элемента
            if (CMResult != CR_SUCCESS)
            {
                return -3;
            }
            else
            {
                WCHAR * ChildInstanceIDBuff = (WCHAR *) calloc(ChildDBuffLength, sizeof(WCHAR)); // выделяем память для пути до дочернего элемента
                CMResult = CM_Get_Device_IDW(SecondChildDeviceNode, ChildInstanceIDBuff, ChildDBuffLength, 0x0); // получаем путь до дочернего элемента

                if (CMResult != CR_SUCCESS)
                {
                    return -4;
                }
                else
                {
                    std::cout &lt;&lt; &quot;Found child device: &quot;;
                    std::wcout &lt;&lt; ChildInstanceIDBuff &lt;&lt; std::endl;
                }

                free(ChildInstanceIDBuff);
            }
        }
    }

    return 0;
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (regnor)]]></author>
			<pubDate>Tue, 11 May 2021 11:34:37 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/15560/#p15560</guid>
		</item>
		<item>
			<title><![CDATA[Re: Получение пути до дочернего устройства]]></title>
			<link>https://forum.rutoken.ru/post/15530/#p15530</link>
			<description><![CDATA[<p>Благодарю! Да, это то что нужно!</p>]]></description>
			<author><![CDATA[null@example.com (regnor)]]></author>
			<pubDate>Thu, 29 Apr 2021 11:51:11 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/15530/#p15530</guid>
		</item>
		<item>
			<title><![CDATA[Re: Получение пути до дочернего устройства]]></title>
			<link>https://forum.rutoken.ru/post/15529/#p15529</link>
			<description><![CDATA[<p>Добрый день!</p><p>Можем подсказать направление: <a href="https://stackoverflow.com/questions/14253830/how-to-find-the-device-instance-id-of-a-pcsc-reader">https://stackoverflow.com/questions/142 … csc-reader</a></p><p>С помощью SCardGetAttrib() можно сопоставить имя считывателя, например, &quot;Aktiv Rutoken ECP 0&quot; c VID и PID.</p><p>В целом кажется, что здесь есть все то, что вы ищите:<br /><a href="https://medium.com/@ermmarat/workaround-for-limitation-of-10-smart-card-readers-in-windows-server-2012-r2-windows-8-and-later-3012eaa2de67">https://medium.com/@ermmarat/workaround … 12eaa2de67</a></p><p>Открытый код разработки: <a href="https://github.com/MarErm27/workaroundForSmartCardsLimitationInWindows">https://github.com/MarErm27/workaroundF … nInWindows</a></p>]]></description>
			<author><![CDATA[null@example.com (Павел Анфимов)]]></author>
			<pubDate>Thu, 29 Apr 2021 11:34:14 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/15529/#p15529</guid>
		</item>
		<item>
			<title><![CDATA[Получение пути до дочернего устройства]]></title>
			<link>https://forum.rutoken.ru/post/15528/#p15528</link>
			<description><![CDATA[<p>Доброго времени суток. Есть два рутокена, которые подключены к компьютеру. Появилась необходимость периодически отключать один из них. Делаю это через утилиту devcon.exe, которая входит в состав WDK. Отключаю устройство чтения смарт карт Microsoft Usbccid (WUDF) по пути к экземпляру. Опытным путем вычислил (могу, конечно, ошибаться), что PKI-Core записывает в вектор устройства по порядковому номеру, который находиться в дочернем элементе устройства чтения смарт карт Microsoft Usbccid (WUDF), пример на скрине<span class="postimg"><a class="fancybox fancybox.image" rel="group" href="https://forum.rutoken.ru/uploads/images/2021/04/44d4624efdbba23a87e05ddffb13f89b.jpg"><img class="fb_img" src="https://forum.rutoken.ru/uploads/previews/2021/04/44d4624efdbba23a87e05ddffb13f89b.jpg" alt="" /></a></span> <br />Соответственно, если там 0, то это первый элемент в векторе, 1 - второй и так далее.<br />Так же в свою очередь у устройства смарт карты есть родитель - это пусть до экземпляра устройства чтения смарт карт Microsoft Usbccid (WUDF), которое нужно отключить, скрин ниже<br /><span class="postimg"><a class="fancybox fancybox.image" rel="group" href="https://forum.rutoken.ru/uploads/images/2021/04/ffbcdb1a733bb119c16749bbcc00cebf.jpg"><img class="fb_img" src="https://forum.rutoken.ru/uploads/previews/2021/04/ffbcdb1a733bb119c16749bbcc00cebf.jpg" alt="" /></a></span></p><p>Отсюда вопрос, можно ли как то через ваше апи получить путь до дочернего элемента устройство чтения смарт карт Microsoft Usbccid (WUDF) или наоборот, получить путь до родителя устройства смарт карты?<br />Спасибо.</p><p>P.S.<br />В winapi пока ничего не нашел...</p>]]></description>
			<author><![CDATA[null@example.com (regnor)]]></author>
			<pubDate>Thu, 29 Apr 2021 11:24:05 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/15528/#p15528</guid>
		</item>
	</channel>
</rss>
