{"id":105,"date":"2008-06-03T11:12:31","date_gmt":"2008-06-03T08:12:31","guid":{"rendered":"http:\/\/pblog.ru\/?p=105"},"modified":"2008-08-10T16:50:46","modified_gmt":"2008-08-10T13:50:46","slug":"105","status":"publish","type":"post","link":"http:\/\/pblog.ru\/?p=105","title":{"rendered":"\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0432 Windows"},"content":{"rendered":"<p>\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c! \u041d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e, \u043f\u043e\u0441\u043b\u0435 \u0434\u043e\u043b\u0433\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0440\u044b\u0432\u0430 \u043d\u0430 \u0431\u043b\u043e\u0433\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432, \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f! \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 Windows NT. \u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0442\u043e, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0435 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u041d\u0430 <a href=\"http:\/\/programmersforum.ru\/\">\u0444\u043e\u0440\u0443\u043c\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432<\/a> \u0447\u0430\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0442\u0435\u043c\u044b \u0441 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u043f\u0440\u043e \u0442\u043e, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u043e\u0431 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0445 \u0432 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0435. \u0418 \u043e\u0431 \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u044f \u0431\u0443\u0434\u0443 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<p><!--more--><\/p>\n<p>&nbsp;&nbsp;&nbsp;\u0424\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438, \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0445 cfgmgr32.dll \u0438 setupapi.dll. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 Delphi \u043d\u0435\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u044d\u0442\u0438\u043c\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0438. \u042d\u0442\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0441 \u0441\u0430\u0439\u0442\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Delphi-JEDI. \u0422\u0435, \u043a\u043e\u043c\u0443 \u043d\u0435 \u043d\u0440\u0430\u0432\u044f\u0442\u0441\u044f \u043c\u043e\u0434\u0443\u043b\u0438 \u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Delphi-JEDI \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u043e\u0438\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c setupapi.pas, \u043d\u043e \u0432 \u043d\u0451\u043c \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u043f\u043e\u043b\u043d\u044b\u0439  \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440.<\/p>\n<p ALIGN=\"center\"><strong>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432<\/strong><\/p>\n<p>&nbsp;&nbsp;&nbsp;\u041f\u0435\u0440\u0432\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0451\u043c\u0441\u044f \u044d\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u043a\u043b\u0430\u0441\u0441\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: \u043a\u043b\u0430\u0441\u0441 \u0432\u0438\u0434\u0435\u043e\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043f\u0440\u0438\u043d\u0442\u0435\u0440\u043e\u0432, \u043c\u043e\u0434\u0435\u043c\u044b, \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0438 \u0442.\u0434. \u041b\u044e\u0431\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442\u044c \u043a\u0430\u043a-\u043d\u0438\u0431\u0443\u0434\u044c \u043a\u043b\u0430\u0441\u0441\u0443. \u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u0438\u043c GUID\u2019\u043e\u043c (\u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440). GUID \u044d\u0442\u043e 128 \u0431\u0438\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0442\u0438\u043f\u0430: {C06136A2-43EA-4F43-AF06-7413D07E28B7}. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0434\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043b\u0430\u0441\u0441\u043e\u0432. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f CM_Enumerate_Classes:<br \/>\n<code>CMAPI CONFIGRET WINAPI<br \/>\n&nbsp;&nbsp;CM_Enumerate_Classes(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN ULONG  ulClassIndex,\/\/ \u0438\u043d\u0434\u0435\u043a\u0441 \u043a\u043b\u0430\u0441\u0441\u0430<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;OUT LPGUID  ClassGuid,\/\/ \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c GUID \u043a\u043b\u0430\u0441\u0441\u0430<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN ULONG  ulFlags \/\/\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;);<\/code><br \/>\n\u0414\u043b\u044f \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432 \u0446\u0438\u043a\u043b\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 0. \u0415\u0441\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u0435\u0440\u043d\u0443\u043b\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435  CR_NO_SUCH_VALUE, \u0437\u043d\u0430\u0447\u0438\u0442, \u043c\u044b \u043f\u0440\u0438\u0448\u043b\u0438 \u043a \u043a\u043e\u043d\u0446\u0443 \u0441\u043f\u0438\u0441\u043a\u0430. \u0412\u0442\u043e\u0440\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e TGUID, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d GUID \u043a\u043b\u0430\u0441\u0441\u0430. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043a\u043b\u0430\u0441\u0441\u0435 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f SetupDiGetClassDescription:<br \/>\n<code>WINSETUPAPI BOOL WINAPI<br \/>\n&nbsp;&nbsp;SetupDiGetClassDescription(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN LPGUID  ClassGuid,\/\/GUID \u043a\u043b\u0430\u0441\u0441\u0430<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;OUT PTSTR  ClassDescription,\/\/\u0441\u0442\u0440\u043e\u043a\u0430<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN DWORD  ClassDescriptionSize,\/\/\u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;OUT PDWORD  RequiredSize  OPTIONAL\/\/\u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;);<\/code><br \/>\n\u0412\u0442\u043e\u0440\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u0434\u0442\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0431\u0443\u0444\u0435\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u043a\u043b\u0430\u0441\u0441\u0430. \u0422\u0440\u0435\u0442\u044c\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u0434\u0442\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430. \u0415\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u0442, \u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0434\u0438\u043c \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c.<br \/>\n&nbsp;&nbsp;&nbsp;\u0421\u043f\u0438\u0441\u043e\u043a \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u0445 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0443. \u0417\u0434\u0435\u0441\u044c \u043a \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0451\u0442 \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f SetupDiGetClassDevs:<br \/>\n<code>HDEVINFO<br \/>\n&nbsp;&nbsp;SetupDiGetClassDevs(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN LPGUID  ClassGuid,  OPTIONAL<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN PCTSTR  Enumerator,  OPTIONAL<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN HWND  hwndParent,  OPTIONAL<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN DWORD  Flags<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;);<\/code><br \/>\n\u0423 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e. \u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0437\u0430\u0434\u0430\u0451\u0442 \u043a\u043b\u0430\u0441\u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0440\u0430\u0432\u0435\u043d \u043d\u0443\u043b\u044e, \u0442\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0442\u044c\u0441\u044f \u0431\u0443\u0434\u0443\u0442 \u0432\u0441\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u0412\u0442\u043e\u0440\u043e\u0439 \u0438 \u0442\u0440\u0435\u0442\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b (\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0438\u043c\u044f PnP \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044f \u0438 \u0445\u0435\u043d\u0434\u043b \u0444\u043e\u0440\u043c\u044b) \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0432\u043d\u044b \u043d\u0443\u043b\u044e. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0441\u0430\u043c\u044b\u0439 \u0432\u0430\u0436\u043d\u044b\u0439. \u041e\u043d \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043e\u0434\u043d\u043e \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u043b\u0438 \u0438\u0445 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e:<br \/>\nDIGCF_ALLCLASSES<br \/>\n\u0411\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0451\u043d \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0438 \u0432\u0441\u0435\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d.<br \/>\nDIGCF_DEVICEINTERFACE<br \/>\n\u0412\u043e\u0437\u0432\u0440\u0430\u0442 \u0441\u043f\u0438\u0441\u043a\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b.<br \/>\nDIGCF_DEFAULT<br \/>\n\u0412\u043e\u0437\u0432\u0440\u0430\u0442 \u0441\u043f\u0438\u0441\u043a\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<br \/>\nDIGCF_PRESENT<br \/>\n\u0411\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0451\u043d \u0441\u043f\u0438\u0441\u043e\u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435.<br \/>\nDIGCF_PROFILE<br \/>\n\u0411\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0451\u043d \u0441\u043f\u0438\u0441\u043e\u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f.<br \/>\n\u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u0434\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043b\u0430\u0441\u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u0444\u043b\u0430\u0433 DIGCF_PRESENT. \u041f\u0440\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0445\u0435\u043d\u0434\u043b \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430.<br \/>\n&nbsp;&nbsp;&nbsp;\u0418\u0442\u0430\u043a, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a (\u0432\u0435\u0440\u043d\u0435\u0435 \u0435\u0433\u043e \u0445\u0435\u043d\u0434\u043b) \u0438 \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u043a\u0430\u043a-\u0442\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0435\u0441\u044f \u0432 \u043d\u0451\u043c. \u041d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u043a \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0451\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c SetupDiEnumDeviceInfo:<br \/>\n<code>WINSETUPAPI BOOL WINAPI<br \/>\n&nbsp;&nbsp;SetupDiEnumDeviceInfo(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN HDEVINFO  DeviceInfoSet,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN DWORD  MemberIndex,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;OUT PSP_DEVINFO_DATA  DeviceInfoData<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;);<\/code><br \/>\n\u0421 \u043f\u0435\u0440\u0432\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c, \u044f \u0434\u0443\u043c\u0430\u044e, \u0432\u0441\u0451 \u044f\u0441\u043d\u043e. \u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u043c\u0435\u0442\u0440 \u0437\u0430\u0434\u0430\u0451\u0442 \u0438\u043d\u0434\u0435\u043a\u0441 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435. \u0422\u0440\u0435\u0442\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u044d\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 SP_DEVINFO_DATA, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435. \u0415\u0441\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u0435\u0440\u043d\u0443\u043b\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 TRUE, \u0442\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0430 \u0435\u0441\u043b\u0438 FALSE, \u0442\u043e \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0447\u0442\u043e \u043c\u044b \u043f\u0440\u0438\u0448\u043b\u0438 \u043a \u043a\u043e\u043d\u0446\u0443 \u0441\u043f\u0438\u0441\u043a\u0430. \u0414\u043b\u044f \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u0432 \u0446\u0438\u043a\u043b\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e SetupDiEnumDeviceInfo \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<br \/>\n\u0418\u0442\u0430\u043a, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435:<br \/>\n<code>typedef struct _SP_DEVINFO_DATA {<br \/>\n&nbsp;&nbsp;DWORD  cbSize;<br \/>\n&nbsp;&nbsp;GUID  ClassGuid;<br \/>\n&nbsp;&nbsp;DWORD  DevInst;<br \/>\n&nbsp;&nbsp;ULONG_PTR  Reserved;<br \/>\n} SP_DEVINFO_DATA, *PSP_DEVINFO_DATA;<\/code><br \/>\n\u041f\u043e \u0441\u0443\u0442\u0438, \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u043f\u043e\u043b\u0435\u043c \u0437\u0434\u0435\u0441\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0435 DevInst, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438 \u0445\u0440\u0430\u043d\u0438\u0442 \u0445\u0435\u043d\u0434\u043b \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043c\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 (\u0438\u043b\u0438 \u0435\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435) \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e SetupDiGetDeviceRegistryProperty. \u0414\u0430\u043b\u0435\u0435 \u0435\u0451 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435<br \/>\n<code>WINSETUPAPI BOOL WINAPI<br \/>\n&nbsp;&nbsp;SetupDiGetDeviceRegistryProperty(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN HDEVINFO  DeviceInfoSet,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN PSP_DEVINFO_DATA  DeviceInfoData,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN DWORD  Property,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;OUT PDWORD  PropertyRegDataType,  OPTIONAL<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;OUT PBYTE  PropertyBuffer,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN DWORD  PropertyBufferSize,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;OUT PDWORD  RequiredSize  OPTIONAL<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;);<\/code><br \/>\n\u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u044d\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 SP_DEVINFO_DATA. \u0422\u0440\u0435\u0442\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0437\u0430\u0434\u0430\u0451\u0442 \u0442\u0438\u043f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c. \u0414\u043b\u044f \u043d\u0430\u0441 \u0432\u0430\u0436\u043d\u044b \u0434\u0432\u0430 \u0444\u043b\u0430\u0433\u0430: SPDRP_FRIENDLYNAME \u0438 SPDRP_DEVICEDESC. \u0414\u0430\u043b\u0435\u0435 \u0438\u0434\u0451\u0442 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0434\u0430\u0451\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043b\u044e\u0447\u0430 \u0440\u0435\u0435\u0441\u0442\u0440\u0430, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u044b\u043b\u0430 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f. \u0414\u0430\u043b\u0435\u0435 \u0438\u0434\u0451\u0442 \u0435\u0449\u0451 \u0442\u0440\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0434\u0430\u044e\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0431\u0443\u0444\u0435\u0440 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0443\u0444\u0435\u0440\u0430 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043d\u0435\u043d\u0440. \u0415\u0441\u043b\u0438 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u043b\u0430\u0433 SPDRP_FRIENDLYNAME, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0432\u043c\u0435\u0441\u0442\u043e \u043c\u043e\u0434\u0435\u043b\u0438 \u0436\u0451\u0441\u0442\u043a\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u0430 \u00ab\u0434\u0438\u0441\u043a\u043e\u0432\u044b\u0439 \u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u044c\u00bb, \u0430 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0444\u043b\u0430\u0433\u0430 SPDRP_DEVICEDESC \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043c\u043e\u0434\u0435\u043b\u044c \u0436\u0451\u0441\u0442\u043a\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u0430. \u041d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u043e\u0431\u043e\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430, \u0438\u043d\u043e\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f SPDRP_FRIENDLYNAME, \u0430 \u0438\u043d\u043e\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f SPDRP_DEVICEDESC. \u0415\u0441\u043b\u0438 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0444\u043b\u0430\u0433\u0430 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u0442\u043e \u043d\u0430\u0434\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0444\u043b\u0430\u0433\u0430.<br \/>\n\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0438\u043c\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e \u0445\u0435\u043d\u0434\u043b\u0443 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 SP_DEVINFO_DATA.<br \/>\n<code>function GetDeviceName(PnPHandle: HDEVINFO; const DevData: TSPDevInfoData): string;<br \/>\nvar<br \/>\n&nbsp;&nbsp;BytesReturned: DWORD;<br \/>\n&nbsp;&nbsp;RegDataType: DWORD;<br \/>\n&nbsp;&nbsp;Buffer: array [0..256] of CHAR;<br \/>\nbegin<br \/>\n&nbsp;&nbsp;BytesReturned := 0;<br \/>\n&nbsp;&nbsp;RegDataType := 0;<br \/>\n&nbsp;&nbsp;Buffer[0] := #0;<br \/>\n&nbsp;&nbsp;SetupDiGetDeviceRegistryProperty(PnPHandle, DevData, SPDRP_FRIENDLYNAME,<br \/>\nRegDataType, PByte(@Buffer[0]), SizeOf(Buffer), BytesReturned);<br \/>\n&nbsp;&nbsp;Result := Buffer;<br \/>\n&nbsp;&nbsp;if Result&lt;&gt;'' then exit;<br \/>\n&nbsp;&nbsp;BytesReturned := 0;<br \/>\n&nbsp;&nbsp;RegDataType := 0;<br \/>\n&nbsp;&nbsp;Buffer[0] := #0;<br \/>\n&nbsp;&nbsp;SetupDiGetDeviceRegistryProperty(PnPHandle, DevData, SPDRP_DEVICEDESC,<br \/>\nRegDataType, PByte(@Buffer[0]), SizeOf(Buffer), BytesReturned);<br \/>\n&nbsp;&nbsp;Result:=Buffer;<br \/>\nend;<\/code><br \/>\n&nbsp;&nbsp;&nbsp;\u0412 \u0438\u0442\u043e\u0433\u0435 \u0443 \u043d\u0430\u0441 \u0432\u044b\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 GUID\u2019\u0443 \u043a\u043b\u0430\u0441\u0441\u0430.<br \/>\n<code>procedure TForm1.AddDevices(aNode: TTreeNode; aGUID: TGUID);<br \/>\nvar<br \/>\n&nbsp;&nbsp;PnPHandle: HDEVINFO;<br \/>\n&nbsp;&nbsp;DevData: TSPDevInfoData;<br \/>\n&nbsp;&nbsp;RES: LongBool;<br \/>\n&nbsp;&nbsp;Devn: Integer;<br \/>\n&nbsp;&nbsp;_DN,_PN:ULONG;<br \/>\nbegin<br \/>\n&nbsp;&nbsp;PnPHandle := SetupDiGetClassDevs(@aGUID, nil, 0, DIGCF_PRESENT);<br \/>\n&nbsp;&nbsp;if PnPHandle = INVALID_HANDLE_VALUE then  Exit;<br \/>\n&nbsp;&nbsp;Devn := 0;<br \/>\n&nbsp;&nbsp;repeat<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;DevData.cbSize := SizeOf(DevData);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;RES := SetupDiEnumDeviceInfo(PnPHandle, Devn, DevData);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;if (RES) and (_DN&lt;&gt;DN_ROOT_ENUMERATED) then<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DeviceTreeView.Items.AddChild(aNode, GetDeviceName(PnPHandle, DevData));<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Inc(Devn);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;if Devn=0 then<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DeviceTreeView.Items.Delete(aNode);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br \/>\n&nbsp;&nbsp;until not RES;<br \/>\n&nbsp;&nbsp;SetupDiDestroyDeviceInfoList(PnPHandle);<br \/>\nend;<\/code><br \/>\n\u0414\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0432 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 TreeView. \u0423\u0437\u0435\u043b \u0434\u0435\u0440\u0435\u0432\u0430 TreeView \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u0442 \u0432\u044b\u0432\u043e\u0434 \u0441\u0435\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0432 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 TreeView. \u0412\u043e\u0442 \u043e\u043d\u0430:<br \/>\n<code>procedure TForm1.AddAllDevices;<br \/>\nvar<br \/>\n&nbsp;&nbsp;_i:DWORD;<br \/>\n&nbsp;&nbsp;Res:CONFIGRET;<br \/>\n&nbsp;&nbsp;GUID: PGUID;<br \/>\n&nbsp;&nbsp;Buffer: array [0..1023] of CHAR;<br \/>\n&nbsp;&nbsp;BufSize: DWORD;<br \/>\n&nbsp;&nbsp;Node:TTreeNode;<br \/>\nbegin<br \/>\n&nbsp;&nbsp;DeviceClassesList:=TStringList.Create;<br \/>\n&nbsp;&nbsp;_i:=0;<br \/>\n&nbsp;&nbsp;repeat<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;GetMem(GUID, SizeOf(TGUID));<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;Res := CM_Enumerate_Classes(_i, GUID^, 0);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;if Res &lt;&gt; CR_NO_SUCH_VALUE then<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetupDiGetClassDescription(GUID^, @Buffer[0], Length(Buffer), BufSize);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DeviceClassesList.AddObject(Pchar(@Buffer[0]), TObject(GUID));<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;Inc(_i);<br \/>\n&nbsp;&nbsp;until Res = CR_NO_SUCH_VALUE;<br \/>\n&nbsp;&nbsp;for _i:=0 to DeviceClassesList.Count-1 do<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;begin<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Node:=DeviceTreeView.Items.AddChild(nil,DeviceClassesList.Strings[_i]);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GUID := PGUID(DeviceClassesList.Objects[_i]);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AddDevices(Node,GUID^);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;end;<br \/>\nend;<\/code><br \/>\n\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0440\u043e\u043a \u0441 \u0438\u043c\u0435\u043d\u0430 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0430 \u0438\u0445 GUID\u2019\u044b. \u041f\u043e\u0442\u043e\u043c  \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u044b\u0437\u043e\u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430.<\/p>\n<p ALIGN=\"center\"><strong>\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432.<\/strong><\/p>\n<p>&nbsp;&nbsp;&nbsp;\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f SetupDiSetClassInstallParams. \u0415\u0451 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435:<br \/>\n<code>WINSETUPAPI BOOL WINAPI<br \/>\n&nbsp;&nbsp;SetupDiSetClassInstallParams(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN HDEVINFO  DeviceInfoSet,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN PSP_DEVINFO_DATA  DeviceInfoData,  OPTIONAL<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN PSP_CLASSINSTALL_HEADER  ClassInstallParams,  OPTIONAL<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN DWORD  ClassInstallParamsSize<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;);<\/code><br \/>\n\u0421 \u043f\u0435\u0440\u0432\u044b\u043c\u0438 \u0434\u0432\u0443\u043c\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u044f \u0434\u0443\u043c\u0430\u044e \u0432\u0441\u0451 \u044f\u0441\u043d\u043e. \u0422\u0440\u0435\u0442\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0437\u0430\u0434\u0430\u0451\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 SP_CLASSINSTALL_HEADER. \u0427\u0435\u0442\u0432\u0451\u0440\u0442\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0437\u0430\u0434\u0430\u0451\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0438, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u041d\u043e \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u0430\u044f \u2013 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 SP_CLASSINSTALL_HEADER, \u0432\u043e\u0442 \u043e\u043d\u0430:<br \/>\n<code>typedef struct _SP_CLASSINSTALL_HEADER {<br \/>\n&nbsp;&nbsp;DWORD  cbSize;<br \/>\n&nbsp;&nbsp;DI_FUNCTION  InstallFunction;<br \/>\n} SP_CLASSINSTALL_HEADER, *PSP_CLASSINSTALL_HEADER;<\/code><br \/>\n\u041f\u043e\u043b\u0435 InstallFunction \u0437\u0430\u0434\u0430\u0451\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u0443\u044e \u043d\u0430\u0434 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e. \u0414\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\/\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u044d\u0442\u043e \u043f\u043e\u043b\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u043d\u043e \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0435 DIF_PROPERTYCHANGE. \u0414\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\/\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430:<br \/>\n<code>typedef struct _SP_PROPCHANGE_PARAMS {<br \/>\n&nbsp;&nbsp;SP_CLASSINSTALL_HEADER  ClassInstallHeader;<br \/>\n&nbsp;&nbsp;DWORD  StateChange;<br \/>\n&nbsp;&nbsp;DWORD  Scope;<br \/>\n&nbsp;&nbsp;DWORD  HwProfile;<br \/>\n} SP_PROPCHANGE_PARAMS, *PSP_PROPCHANGE_PARAMS;<\/code><br \/>\n\u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u0435 StateChange \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u043d\u043e DICS_ENABLE, \u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0438\u043d\u0430\u0447\u0435 DICS_DISABLE. \u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u0435 Scope \u0440\u0430\u0432\u043d\u043e DICS_FLAG_GLOBAL, \u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0442\u0443\u043f\u044f\u0442 \u0432 \u0441\u0438\u043b\u0443 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439, \u0435\u0441\u043b\u0438 DICS_FLAG_CONFIGSPECIFIC, \u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0442\u0443\u043f\u044f\u0442 \u0432 \u0441\u0438\u043b\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f. \u041f\u043e\u043b\u0435 HwProfile \u0437\u0430\u0434\u0430\u0451\u0442 ID \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u043e\u043d \u0440\u0430\u0432\u0435\u043d \u043d\u0443\u043b\u044e, \u0442\u043e \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c. \u0412\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0443\u0436\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u00ab\u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0438\u00bb \u043f\u0435\u0440\u0435\u0434 \u043b\u044e\u0431\u044b\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043d\u0430\u0434\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0434\u0432\u0430 \u0440\u0430\u0437\u0430. \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0438\u043b\u0430 \u0438\u0441\u0442\u0438\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0437\u043d\u0430\u0447\u0438\u0442 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437.<br \/>\n&nbsp;&nbsp;&nbsp;\u041f\u043e\u0441\u043b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430\u0434\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a \u043a\u043b\u0430\u0441\u0441\u0430, \u0442.\u043a. \u043f\u043e\u0441\u043b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0442\u0443\u043f\u0438\u043b\u0438 \u0432 \u0441\u0438\u043b\u0443. \u042d\u0442\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 SetupDiCallClassInstaller<br \/>\n<code>WINSETUPAPI BOOL WINAPI<br \/>\n&nbsp;&nbsp;SetupDiCallClassInstaller(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN DI_FUNCTION  InstallFunction,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN HDEVINFO  DeviceInfoSet,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN PSP_DEVINFO_DATA  DeviceInfoData  OPTIONAL<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;);<\/code><br \/>\n\u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0437\u0430\u0434\u0430\u0451\u0442 \u043a\u043e\u0434 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. \u0414\u0432\u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u044f \u0434\u0443\u043c\u0430\u044e, \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0435 \u0432\u044b\u0437\u043e\u0432\u0443\u0442.<br \/>\n\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a\u043e\u0434 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c\/\u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c\/\u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0435\u0442\u0435\u0432\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u042d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f:<br \/>\n<code>procedure EnableNetDevice(aState:boolean;index:integer);<br \/>\nvar<br \/>\n&nbsp;&nbsp;NetPnPHandle:HDEVINFO;<br \/>\n&nbsp;&nbsp;PCHP:TSPPropChangeParams;<br \/>\n&nbsp;&nbsp;DeviceData:TSPDevInfoData;<br \/>\nbegin<br \/>\n&nbsp;&nbsp;NetPnPHandle:=SetupDiGetClassDevs(@GUID_DEVCLASS_NET, 0, 0, DIGCF_PRESENT);<br \/>\n&nbsp;&nbsp;if NetPnPHandle=INVALID_HANDLE_VALUE then exit;<br \/>\n&nbsp;&nbsp;DeviceData.cbSize:=sizeof(TSPDevInfoData);<br \/>\n&nbsp;&nbsp;SetupDiEnumDeviceInfo(NetPnPHandle, index, DeviceData);<br \/>\n&nbsp;&nbsp;PCHP.ClassInstallHeader.cbSize:=sizeof(TSPClassInstallHeader);<br \/>\n&nbsp;&nbsp;if SetupDiSetClassInstallParams(NetPnPHandle,@DeviceData,@PCHP,sizeof(TSPPropChangeParams)) then<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;begin<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PCHP.ClassInstallHeader.cbSize := sizeof(TSPClassInstallHeader);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PCHP.ClassInstallHeader.InstallFunction := DIF_PROPERTYCHANGE;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PCHP.Scope := DICS_FLAG_CONFIGSPECIFIC;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;if aState then<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PCHP.StateChange := DICS_ENABLE<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PCHP.StateChange := DICS_DISABLE;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;SetupDiSetClassInstallParams(NetPnPHandle,@DeviceData,@PCHP,sizeof(TSPPropChangeParams));<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;SetupDiCallClassInstaller(DIF_PROPERTYCHANGE,NetPnPHandle,@DeviceData);<br \/>\n&nbsp;&nbsp;end;<br \/>\n&nbsp;&nbsp;DeviceData.cbSize := sizeof(TSPDevInfoData);<br \/>\n&nbsp;&nbsp;SetupDiDestroyDeviceInfoList(NetPnPHandle);<br \/>\nend;<\/code><br \/>\n\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 index \u0437\u0430\u0434\u0430\u0451\u0442 \u0438\u043d\u0434\u0435\u043a\u0441 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432.<\/p>\n<p ALIGN=\"center\"><strong>\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0435 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430<\/strong><\/p>\n<p>&nbsp;&nbsp;&nbsp;\u0418\u0442\u0430\u043a, \u0441 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c\/\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043c\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c. \u0410 \u043a\u0430\u043a \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e? \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0435 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f CM_Request_Device_Eject. \u0412\u043e\u0442 \u0435\u0451 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435:<br \/>\n<code>CMAPI CONFIGRET WINAPI<br \/>\n&nbsp;&nbsp;CM_Request_Device_Eject(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN DEVINST  dnDevInst,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;OUT PPNP_VETO_TYPE  pVetoType,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;OUT LPTSTR  pszVetoName,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN ULONG  ulNameLength,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;IN ULONG  ulFlags<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;);<\/code><br \/>\n\u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u044d\u0442\u043e \u0445\u0435\u043d\u0434\u043b \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u044d\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d \u043a\u043e\u0434 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u043f\u0440\u0438 \u043d\u0435\u0443\u0434\u0430\u0447\u0435. \u0422\u0440\u0435\u0442\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u044d\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0430 \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u043d\u0435\u0443\u0434\u0430\u0447\u0438 \u043f\u0440\u0438 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435. \u041e\u0431\u0430 \u044d\u0442\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b \u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0432\u043d\u044b \u043d\u0443\u043b\u044e. \u041f\u044f\u0442\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u044d\u0442\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0438. \u0428\u0435\u0441\u0442\u043e\u0439 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 pszVetoName \u0440\u0430\u0432\u0435\u043d \u043d\u0443\u043b\u044e, \u0442\u043e \u043f\u0440\u0438 \u043d\u0435\u0443\u0434\u0430\u0447\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u0441\u0430\u043c\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430. \u0412\u043e\u0442 \u0438 \u0441\u0430\u043c\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0435 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<br \/>\n<code>procedure RemoveDrive(index:integer);<br \/>\nvar<br \/>\n&nbsp;&nbsp;DrivesPnPHandle: HDEVINFO;<br \/>\n&nbsp;&nbsp;DevInfo: SP_DEVINFO_DATA;<br \/>\n&nbsp;&nbsp;i: Integer;<br \/>\n&nbsp;&nbsp;Parent: DWORD;<br \/>\n&nbsp;&nbsp;VetoName:array[0..MAX_PATH] of char;<br \/>\nbegin<br \/>\n&nbsp;&nbsp;DevInfo.cbSize := sizeof(SP_DEVINFO_DATA);<br \/>\n&nbsp;&nbsp;DrivesPnPHandle := SetupDiGetClassDevsA(@GUID_DEVCLASS_DISKDRIVE, nil, 0, 2);<br \/>\n&nbsp;&nbsp;if DrivesPnPHandle = INVALID_HANDLE_VALUE then exit;<br \/>\n&nbsp;&nbsp;if SetupDiEnumDeviceInfo(DrivesPnPHandle, index, DevInfo) then<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;begin<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (IsUSBDevice(DevInfo.DevInst)) and (CM_Get_Parent(Parent, DevInfo.DevInst, 0) = CR_SUCCESS)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;then<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CM_Request_Device_Eject(Parent, nil, @VetoName, MAX_PATH, 0);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if VetoName='' then<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShowMessage('\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u0432\u043b\u0435\u0447\u044c')<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShowMessage('\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0437\u0432\u043b\u0435\u0447\u044c');<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShowMessage('\u041d\u0435 USB \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e');<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;end;<br \/>\n&nbsp;&nbsp;SetupDiDestroyDeviceInfoList(DrivesPnPHandle);<br \/>\nend;<\/code><br \/>\n\u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u044d\u0442\u043e \u0438\u043d\u0434\u0435\u043a\u0441 \u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0434\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0447\u0442\u043e \u043c\u043e\u0434\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e &#8212; \u044d\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f CM_Get_Parent. \u041e\u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0412\u0435\u0434\u044c \u043b\u044e\u0431\u0430\u044f \u00ab\u0444\u043b\u0435\u0448\u043a\u0430\u00bb \u0438\u043b\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0434\u0438\u0441\u043a\u043e\u0432\u044b\u0439 \u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u044c \u044d\u0442\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043d\u0430\u0434\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e. \u041a\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 IsUSBDevice \u0435\u0441\u0442\u044c \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043a \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<p><strong>\u041e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438<\/strong><br \/>\n&nbsp;&nbsp;&nbsp;\u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0435, \u0433\u043b\u0430\u0432\u043d\u043e\u043c\u0443 \u043e\u043a\u043d\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 WM_DEVICECHANGE.\u041f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f WParam \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u0434 \u0441\u043e\u0431\u044b\u0442\u0438\u044f. \u041d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0440\u0438 \u043a\u043e\u0434\u0430: DBT_DEVICEARRIVAL, DBT_DEVICEREMOVECOMPLETE \u0438 DBT_DEVNODES_CHANGED.<br \/>\n&nbsp;&nbsp;&nbsp;\u0421\u043e\u0431\u044b\u0442\u0438\u0435 DBT_DEVNODES_CHANGED \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0435. LParam \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0430\u0432\u0435\u043d \u043d\u0443\u043b\u044e. \u0421\u043e\u0431\u044b\u0442\u0438\u044f DBT_DEVICEARRIVAL \u0438 DBT_DEVICEREMOVECOMPLETE \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b \u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u043f\u0435\u0440\u0432\u043e\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438 \u0432\u0442\u043e\u0440\u043e\u0435 \u043e\u0442\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. LParam \u043e\u0442\u043b\u0438\u0447\u0435\u043d \u043e\u0442 \u043d\u0443\u043b\u044f \u043f\u0440\u0438 \u044d\u0442\u0438\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0445 \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 DEV_BROADCAST_HDR. \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u043e\u043b\u044f dbch_devicetype \u0432 \u0436\u0442\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u043f\u043e\u043b\u044f \u043c\u043e\u0433\u0443\u0442 \u0432\u0430\u0440\u044c\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438  dbch_devicetype  \u0440\u0430\u0432\u0435\u043d DBT_DEVTYP_VOLUME, \u0442\u043e LParam \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 DEV_BROADCAST_VOLUME \u0438 \u043f\u043e\u043b\u0435 dbcv_unitmask \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0431\u0438\u0442\u043e\u0432\u0443\u044e \u043c\u0430\u0441\u043a\u0443 \u043d\u043e\u0432\u044b\u0445 \u0434\u0438\u0441\u043a\u043e\u0432. (\u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0431\u0438\u0442 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0431\u0443\u043a\u0432\u0443 \u0410, \u0432\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u043a\u0432\u0443 B, \u0442\u0440\u0435\u0442\u0438\u0439 \u0431\u0443\u043a\u0432\u0443 C \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435).<br \/>\n&nbsp;&nbsp;\u041f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a\u043e\u0434 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430, \u043e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043a \u0441\u0442\u0430\u0442\u044c\u0435.<br \/>\n&nbsp;&nbsp;&nbsp;\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u00ab\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f\u00bb \u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430\u0434\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e RegisterDeviceNotification:<br \/>\n<code>HDEVNOTIFY WINAPI RegisterDeviceNotification(<br \/>\n&nbsp;&nbsp;__in  HANDLE hRecipient,<br \/>\n&nbsp;&nbsp;__in  LPVOID NotificationFilter,<br \/>\n&nbsp;&nbsp;__in  DWORD Flags<br \/>\n);<\/code><br \/>\n\u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u044d\u0442\u043e \u0445\u0435\u043d\u0434\u043b \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043b\u0438\u0431\u043e \u0445\u0435\u043d\u0434\u043b \u0444\u043e\u0440\u043c\u044b. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 NotificationFilter \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c \u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 DEV_BROADCAST_HDR \u0438 \u0437\u0430\u0434\u0430\u0451\u0442 \u0442\u0438\u043f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0434\u043b\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f. \u0414\u043b\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043f\u043e\u043b\u0435 dbch_devicetype \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0440\u0430\u0432\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e DBT_DEVTYP_DEVICEINTERFACE. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432\u0441\u0435\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u0415\u0441\u043b\u0438 \u0442\u0440\u0435\u0442\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0440\u0430\u0432\u0435\u043d DEVICE_NOTIFY_WINDOW_HANDLE, \u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0445\u0435\u043d\u0434\u043b\u043e\u043c \u043e\u043a\u043d\u0430, \u0435\u0441\u043b\u0438 DEVICE_NOTIFY_SERVICE_HANDLE, \u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u044d\u0442\u043e \u0445\u0435\u043d\u0434\u043b \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0430. \u0422\u0430\u043a\u0436\u0435 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0431 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0432\u0441\u0435\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0444\u043b\u0430\u0433DEVICE_NOTIFY_ALL_INTERFACE_CLASSES.<\/p>\n<p>&nbsp;&nbsp;&nbsp;\u0412\u043e\u0442 \u0438 \u043a\u043e\u043d\u0435\u0446 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438. \u041a \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u0438\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a \u043d\u0430 Delphi \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c \u043b\u043e\u0433\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0435. \u041e\u0441\u0442\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u0441\u0432\u043e\u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u0435\u0441\u043b\u0438 \u044f \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043b \u043e\u0448\u0438\u0431\u043a\u0438 \u043b\u0438 \u043d\u0435\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438. \u0422\u0430\u043a\u0436\u0435 \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u044f \u043e\u0441\u0432\u0435\u0442\u0438\u043b \u0435\u0449\u0451 \u043a\u0430\u043a\u0438\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u0430\u0441\u043f\u0435\u043a\u0442\u044b \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438, \u0442\u043e \u0442\u043e\u0436\u0435 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u00ab\u0437\u0430\u044f\u0432\u043a\u0438\u00bb \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043a \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<p><a href='http:\/\/pblog.ru\/wp-content\/uploads\/workwithdevices.zip' title='Delphi \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a \u043a \u0441\u0442\u0430\u0442\u044c\u0435 \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0432 Windows'>\u0421\u043a\u0430\u0447\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a \u043a \u0441\u0442\u0430\u0442\u044c\u0435<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c! \u041d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e, \u043f\u043e\u0441\u043b\u0435 \u0434\u043e\u043b\u0433\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0440\u044b\u0432\u0430 \u043d\u0430 \u0431\u043b\u043e\u0433\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432, \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f! \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 Windows NT. \u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0442\u043e, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0435 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u041d\u0430 \u0444\u043e\u0440\u0443\u043c\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432 \u0447\u0430\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0442\u0435\u043c\u044b \u0441 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u043f\u0440\u043e \u0442\u043e, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u043e\u0431 [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3,7],"tags":[18,24,431,17,20,23,19,22,21,16,14,13],"_links":{"self":[{"href":"http:\/\/pblog.ru\/index.php?rest_route=\/wp\/v2\/posts\/105"}],"collection":[{"href":"http:\/\/pblog.ru\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/pblog.ru\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/pblog.ru\/index.php?rest_route=\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"http:\/\/pblog.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=105"}],"version-history":[{"count":1,"href":"http:\/\/pblog.ru\/index.php?rest_route=\/wp\/v2\/posts\/105\/revisions"}],"predecessor-version":[{"id":910,"href":"http:\/\/pblog.ru\/index.php?rest_route=\/wp\/v2\/posts\/105\/revisions\/910"}],"wp:attachment":[{"href":"http:\/\/pblog.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=105"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/pblog.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=105"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/pblog.ru\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}