Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Wuotan
0 / 0 / 0
Регистрация: 09.03.2014
Сообщений: 8
#1

Работа с USB устройствами Visual Studio c++ - C++

11.05.2014, 15:51. Просмотров 1516. Ответов 5
Метки нет (Все метки)

Здравствуйте. У меня задача такая: нужно найти конкретную флэшку по серийному номеру и записать туда данные в файл. В интернете искал естественно. На русских сайтах ничего толкового...Есть для c++builder примеры,но там досовские функции,а у меня основная программа на visual studio для windows 7 64. Функции должны быть в api и в wmi.Нашел это
http://oroboro.com/usb-serial-number/
но если код и рабочий, то библиотеку #include <api/usbioctl.h> не находит. Где её достать или чем заменить?
Api и wmi только буквально начал изучать, поэтому многого не знаю, а там очень много всего и времени у меня до сдачи этой программы мало. Ткните пальцем, пожалуйста, куда смотреть. Нужен вектор направления. Вторые сутки копаюсь в интернете и вижу фигу.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2014, 15:51     Работа с USB устройствами Visual Studio c++
Посмотрите здесь:

Работа в Visual Studio - C++
Подскажите, где можно почитать о приёмах работы и отладке программ в Visual Studio с самых базовых моментов, т.е. для новичков. Спасибо.

Работа с Visual Studio - C++
Пожалуйста, подскажите как компилить в этой среде. Да и вообще, урок-другой по среде &quot;Мелкомягких&quot; не помешает. Кстати, версия - 2010. ...

Работа с матрицей С++ Visual Studio - C++
Люди, помогите сделать задание с матрицей. Вобщем: Дана матрица натуральных чисел (Xij) порядка m*n. Упорядочить столбцы матрицы за...

Visual Studio, C++, работа с присоединённой БД - C++
во вкладке Server Explorer присоединил базу данных, подскажите пожалуйста, как с ней работать? Как к ней обратиться с запросом? ...

Visual studio c++ Работа с графикой - C++
Доброго времени суток! Пожалуйста подскажите какой библиотекой пользоваться для создания и работы с графикой в visual studio 2012 С++??

Работа в Microsoft Visual Studio 2013 - C++
Sub Main() MsgBox() using namespace std; int main() { char a , b, c, d, e, f; cout&lt;&lt; &quot;What is your name and...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
5276 / 4596 / 1541
Регистрация: 14.04.2014
Сообщений: 18,257
11.05.2014, 18:04     Работа с USB устройствами Visual Studio c++ #2
А ты WDK установил? Там же даётся ссылка. Эти файлы из него.
Qazan
211 / 59 / 9
Регистрация: 30.04.2013
Сообщений: 797
Записей в блоге: 10
11.05.2014, 18:29     Работа с USB устройствами Visual Studio c++ #3
Creating a WMI Application Using C++ (MSDN)
Wuotan
0 / 0 / 0
Регистрация: 09.03.2014
Сообщений: 8
11.05.2014, 19:15  [ТС]     Работа с USB устройствами Visual Studio c++ #4
Я до этого комментария даже не знал о существовании WDK. По видимому нет... Я так понял там библиотеки и образцы для разработки дров. => Вопрос: там ddl прикреплять придется? Потом готовая программа никакого софта или файлов требовать не будет, на осях где wdk раньше не устанавливался? Например как ms .net framework...
nmcf
5276 / 4596 / 1541
Регистрация: 14.04.2014
Сообщений: 18,257
11.05.2014, 19:30     Работа с USB устройствами Visual Studio c++ #5
Вроде нет. Framework - совсем другое.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2014, 02:16     Работа с USB устройствами Visual Studio c++
Еще ссылки по теме:

Работа с EditBox в Visual Studio 2006 - C++
Я работаю с MFC інтерфейсов и ставил неактивними EditBox с помощью галочки в properties но теперь постала проблема в том штоб заставить ее...

Лаба на Visual Studio С++. Работа с потоками. - C++
Помогите с лабораторной . Задание: Изготовление знаменитого самурайского меча – катаны происходит в три этапа. Сначала младший ученик...

Работа с файлами в Visual studio 2005 - C++
Необходимо в цикле сохранить в файл очень много элементов типа double. Затем необходимо после цикла воспользоваться данными из этого файла....

Работа с текстовым файлом в Visual Studio - C++
Программа компилится, но не может открыть файл studenti.txt. Куда этот файл точно кидать, что бы программа его находила? #include...

Работа со строками (Visual Studio 2010 С++) - C++
Задача: В записке слова зашифрованы - каждое из них записано наоборот. Расшифровать сообщение. Записать исходную и получившиеся строки в...

OpenCV для Visual Studio C++ работа с изображениями - C++
Здравствуйте, товарищи программисты. необходимо выполнить задание по встраиванию в картинку информации. раньше приходилось работать на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Wuotan
0 / 0 / 0
Регистрация: 09.03.2014
Сообщений: 8
12.05.2014, 02:16  [ТС]     Работа с USB устройствами Visual Studio c++ #6
WDK 8.1, который там предлагается, требует Visual Studio 2013, а у меня 2010. Ниже версия 7 для xp.
В общем на просторах я таки нашел рабочую альтернативу.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#define UNICODE
#define _UNICODE
#include <windows.h>
#include <stdio.h>
#include <locale.h>
#include <conio.h>
//#include <WinIoCtl.h>
 
WCHAR* GetElem(WCHAR *ptr,WCHAR delim,WCHAR *buf)
{
   WCHAR *ptr1=NULL;
   ptr1=wcschr(ptr,delim);
   if (ptr1)
   {
      wcsncpy(buf,ptr,(int)(ptr1-ptr));
      buf[(int)(ptr1-ptr)]=0;
      return (ptr1+1);
   }
   else
   {
      wcscpy(buf,ptr);
      return NULL;
   }
}
 
//Входные данные:
// drive_letter - буква диска
void PrintFlashDriveInfo(WCHAR drive_letter)
{
   HKEY hk=NULL;
   LONG Ret=0;
   HANDLE hdrive=INVALID_HANDLE_VALUE;
   DWORD data_size,dtype;
   WCHAR *data=NULL,*buf1=NULL,*buf2=NULL;
   WCHAR *ptr1_1=NULL,*ptr1_2=NULL,*ptr2_1=NULL,*ptr2_2=NULL;
   WCHAR dos_link[50];
   WCHAR drive_name2[20];
 
   __try
   {
      //проверяем существует ли диск в системе
      wsprintf(drive_name2,L"\\\\.\\%c:",drive_letter);
      hdrive = CreateFileW(drive_name2,0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
      if (hdrive==INVALID_HANDLE_VALUE)
      {
         wprintf(L"Ошибка PrintFlashDriveInfo: Ошибка CreateFile: %u\n\n",GetLastError());
         __leave;
      }
      CloseHandle(hdrive);
 
      Ret = RegOpenKeyExW(HKEY_LOCAL_MACHINE,L"SYSTEM\\MountedDevices",0,KEY_READ,&hk);
      if (Ret!=ERROR_SUCCESS)
      {
         wprintf(L"Ошибка PrintFlashDriveInfo: Ошибка RegOpenKeyEx: %u\n\n",Ret);
         __leave;
      }
 
      wsprintf(dos_link,L"\\DosDevices\\%c:",drive_letter);
      Ret=RegQueryValueExW(hk,dos_link,NULL,&dtype,NULL,&data_size);
      if (Ret==ERROR_SUCCESS)
      {
         data=(WCHAR *)malloc(data_size+2);
         buf1=(WCHAR *)malloc(data_size+2);
         buf2=(WCHAR *)malloc(data_size+2);
         if (data==NULL||buf1==NULL||buf2==NULL)
         {
            wprintf(L"Ошибка PrintFlashDriveInfo: Ошибка malloc.\n\n");
            __leave;
         }
         memset(data,0,data_size+2);
 
         Ret=RegQueryValueExW(hk,dos_link,NULL,&dtype,(LPBYTE)data,&data_size);
         if (Ret!=ERROR_SUCCESS)
         {
            wprintf(L"Ошибка PrintFlashDriveInfo: Ошибка RegQueryValueEx: %u\n\n",Ret);
            __leave;
         }
         if(wcsstr(data,L"USBSTOR")!=NULL)
         {
            wprintf(L"Данные флеш-диска %c:\n",drive_letter);
            ptr1_1=GetElem(data,L'#',buf1);
            if (ptr1_1)
            {
               ptr1_2=GetElem(ptr1_1,L'#',buf1);
               ptr1_1=buf1;
               do
               {
                  ptr2_2=GetElem(ptr1_1,L'&',buf2);
                  if (wcsstr(buf2,L"Ven_"))
                     wprintf(L"Производитель: %s\n",buf2+4);
                  else if (wcsstr(buf2,L"Prod_"))
                     wprintf(L"Название продукта: %s\n",buf2+5);
                  ptr1_1=ptr2_2;
               } while (ptr2_2);
 
               ptr1_1=GetElem(ptr1_2,L'#',buf1);
               ptr1_1=buf1;
               do
               {
                  ptr2_2=GetElem(ptr1_1,L'&',buf2);
                  if (wcslen(buf2)>3)
                  {
                     wprintf(L"Серийный номер: %s\n",buf2);
                     break;
                  }
                  ptr1_1=ptr2_2;
               } while (ptr2_2);
            }
         }//if USBSTOR
         else
            wprintf(L"Диск %c: НЕ является флешкой\n",drive_letter);
      }
      else
         wprintf(L"Ошибка PrintFlashDriveInfo: Ошибка RegQueryValueEx: %u\n",Ret);
 
      wprintf(L"\n");
   }
   __finally
   {
      if (data!=NULL) free(data);
      if (buf1!=NULL) free(buf1);
      if (buf2!=NULL) free(buf2);
      if (hk!=NULL) RegCloseKey(hk);
   }
}
 
 
int wmain(int argc, WCHAR* argv[])
{
   setlocale(LC_ALL,"Russian");
 
   for (char letter='A';letter<='Z'; letter++){
       PrintFlashDriveInfo(letter);
   }
   wprintf(L"Нажмите любую клавишу...");
   _getch();
   return 0;
}
Yandex
Объявления
12.05.2014, 02:16     Работа с USB устройствами Visual Studio c++
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru