Привет всем!
Помогите решить проблему. Необходимо определить уникальный номер USB - флэш, замечу не серийный номер, который формируется после форматирования,(типа номер диска С (3785939785) или D) компа, с этим все просто, а физический номер.
Для этого используется функция CM_Get_Device_Id () из SetupApi.dll
если в поисковике Google набрать поиск MSDN или CM_Get_Device_Id то последний выдаст множество статей на эту тему, но вот для нашей братвы сларионщиков ничего не нашел.
С уважением , Stalker
Определение номера USB флэш с использованием Setupapi.dll
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- Активист
- Сообщения: 127
- Зарегистрирован: 01 Декабрь 2005, 20:47
- Откуда: Минск
- Контактная информация:
Определение номера USB флэш с использованием Setupapi.dll
Специализация - программы для образования, делопроизводство, складской учет
-
- Активист
- Сообщения: 127
- Зарегистрирован: 01 Декабрь 2005, 20:47
- Откуда: Минск
- Контактная информация:
Re: Определение номера USB флэш с использованием Setupapi.dll
Здравствуйте уважаемые ГУРУ!
Просмотрел форум, но ни одного совета нет. Вопрос не совсем праздный . Зная физический адрес флэшки можно защитить свои программы от нежелательного копирования. А это может понадобиться многим.
Попробую сам докопаться, но на это надо время которого как всегда не хватает.
Сбрасываю на всякий случай параметры функции.
http://msdn.microsoft.com/en-us/library/ms790894.aspx
CM_Get_Device_ID
The CM_Get_Device_ID function retrieves the device instance ID for a specified device instance, on the local machine.
CMAPI CONFIGRET WINAPI
CM_Get_Device_ID( IN DEVINST dnDevInst, OUT PTCHAR Buffer, IN ULONG BufferLen, IN ULONG ulFlags );
Parameters
dnDevInst
Caller-supplied device instance handle that is bound to the local machine.
Buffer
Address of a buffer to receive a device instance ID string. The required buffer size can be obtained by calling CM_Get_Device_ID_Size, then incrementing the received value to allow room for the string's terminating NULL.
BufferLen
Caller-supplied length, in characters, of the buffer specified by Buffer.
ulFlags
Not used, must be zero.
Return Value
If the operation succeeds, the function returns CR_SUCCESS. Otherwise, it returns one of the CR_-prefixed error codes defined in Cfgmgr32.h.
Comments
The function appends a NULL terminator to the supplied device instance ID string, unless the buffer is too small to hold the string. In this case, the function supplies as much of the identifier string as will fit into the buffer, and then returns CR_BUFFER_SMALL.
For information about device instance IDs, see Device Identification Strings.
For information about using device instance handles that are bound to the local machine, see CM_Get_Child.
Requirements
Versions: The CM_Get_Device_ID function is available in Microsoft Windows 2000 and later versions of Windows.
Headers: Declared in Cfgmgr32.h. Include Cfgmgr32.h.
Library: Contained in Cfgmgr32.lib. Link to Cfgmgr32.lib.
See Also
CM_Get_Child, CM_Get_Device_ID_Ex
Send feedback on this topic
Built on August 05, 2009
Просмотрел форум, но ни одного совета нет. Вопрос не совсем праздный . Зная физический адрес флэшки можно защитить свои программы от нежелательного копирования. А это может понадобиться многим.
Попробую сам докопаться, но на это надо время которого как всегда не хватает.
Сбрасываю на всякий случай параметры функции.
http://msdn.microsoft.com/en-us/library/ms790894.aspx
CM_Get_Device_ID
The CM_Get_Device_ID function retrieves the device instance ID for a specified device instance, on the local machine.
CMAPI CONFIGRET WINAPI
CM_Get_Device_ID( IN DEVINST dnDevInst, OUT PTCHAR Buffer, IN ULONG BufferLen, IN ULONG ulFlags );
Parameters
dnDevInst
Caller-supplied device instance handle that is bound to the local machine.
Buffer
Address of a buffer to receive a device instance ID string. The required buffer size can be obtained by calling CM_Get_Device_ID_Size, then incrementing the received value to allow room for the string's terminating NULL.
BufferLen
Caller-supplied length, in characters, of the buffer specified by Buffer.
ulFlags
Not used, must be zero.
Return Value
If the operation succeeds, the function returns CR_SUCCESS. Otherwise, it returns one of the CR_-prefixed error codes defined in Cfgmgr32.h.
Comments
The function appends a NULL terminator to the supplied device instance ID string, unless the buffer is too small to hold the string. In this case, the function supplies as much of the identifier string as will fit into the buffer, and then returns CR_BUFFER_SMALL.
For information about device instance IDs, see Device Identification Strings.
For information about using device instance handles that are bound to the local machine, see CM_Get_Child.
Requirements
Versions: The CM_Get_Device_ID function is available in Microsoft Windows 2000 and later versions of Windows.
Headers: Declared in Cfgmgr32.h. Include Cfgmgr32.h.
Library: Contained in Cfgmgr32.lib. Link to Cfgmgr32.lib.
See Also
CM_Get_Child, CM_Get_Device_ID_Ex
Send feedback on this topic
Built on August 05, 2009
Специализация - программы для образования, делопроизводство, складской учет
- StillZero
- Ветеран
- Сообщения: 454
- Зарегистрирован: 06 Июль 2005, 2:17
- Откуда: Хабаровск
- Контактная информация:
Re: Определение номера USB флэш с использованием Setupapi.dll
В api закономерно использование не одной, а нескольких функций.
Здесь, как видно, как минимум надо получить нужный device instance handle, а так как устройств может быть несколько, то перед этим скорее всего их необходимо будет перечислить.
Функции CM_Get_Device_ID в своем локальном MSDN я не нашел, возможно появилась позже, нашел CM_Get_Device_IDexW, и подозреваю что это логично, т.е. тут еще и unicode. Не страшно, но возможно надо иметь ввиду.
Здесь, как видно, как минимум надо получить нужный device instance handle, а так как устройств может быть несколько, то перед этим скорее всего их необходимо будет перечислить.
Функции CM_Get_Device_ID в своем локальном MSDN я не нашел, возможно появилась позже, нашел CM_Get_Device_IDexW, и подозреваю что это логично, т.е. тут еще и unicode. Не страшно, но возможно надо иметь ввиду.
Все сайты закрыты...
-
- Ветеран
- Сообщения: 311
- Зарегистрирован: 08 Июль 2005, 22:04
Re: Определение номера USB флэш с использованием Setupapi.dll
Я думаю, что на данном этапе у тебя ничего не получится. Вообще, узнавание из клашиной проги
идентификаторов железок - мое хобби. Вот уже выкладывал на форум ссылку на мою прогу, напомню еще разок
http://lsgsoftware.narod.ru/info.html
Сейчас для винды флешка - не штатное, а "виртуальное" устройство. И через штатные API ты вряд ли чего увидишь.
Даже такой монстр, как Эверест про флешку ничего не говорит конкретного. В свое время такая же ситуация была
с установкой винды на SATA- диск. Винда говорила, что на компе вообще нет жестких дисков. Нужен был специальный
драйвер для конкретной мамы, который скармливался при установке по F6. Потом проблему закрыли.
Уже давно я воюю с проблемой установки чистой( не бартовской) винды на флешку. "Почти" получается, но винда уже
вежливо ругается, мол диск(флешку) вижу, но нужен драйвер для скармливания по F6. А вот найти такой драйвер пока не могу.
А может такого и не нет. Ходят слухи, что Windows7 вообще будет поставляться на флешках, так что проблема будет решена,
так же как и с дисками SATA
идентификаторов железок - мое хобби. Вот уже выкладывал на форум ссылку на мою прогу, напомню еще разок
http://lsgsoftware.narod.ru/info.html
Сейчас для винды флешка - не штатное, а "виртуальное" устройство. И через штатные API ты вряд ли чего увидишь.
Даже такой монстр, как Эверест про флешку ничего не говорит конкретного. В свое время такая же ситуация была
с установкой винды на SATA- диск. Винда говорила, что на компе вообще нет жестких дисков. Нужен был специальный
драйвер для конкретной мамы, который скармливался при установке по F6. Потом проблему закрыли.
Уже давно я воюю с проблемой установки чистой( не бартовской) винды на флешку. "Почти" получается, но винда уже
вежливо ругается, мол диск(флешку) вижу, но нужен драйвер для скармливания по F6. А вот найти такой драйвер пока не могу.
А может такого и не нет. Ходят слухи, что Windows7 вообще будет поставляться на флешках, так что проблема будет решена,
так же как и с дисками SATA
-
- Активист
- Сообщения: 127
- Зарегистрирован: 01 Декабрь 2005, 20:47
- Откуда: Минск
- Контактная информация:
Re: Определение номера USB флэш с использованием Setupapi.dll
Привет всем кто откликнулся!
Спасибо за советы. Задача оказалась, как вижу не такой и простой.
На форумах дельфистов и фокпрошников есть кое какие соображения, но очень все сложно
Будем надеятся, на будущее.
Спасибо за советы. Задача оказалась, как вижу не такой и простой.
На форумах дельфистов и фокпрошников есть кое какие соображения, но очень все сложно
Будем надеятся, на будущее.
Специализация - программы для образования, делопроизводство, складской учет