Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2017, 16:13   #1
Beslan_AG
Пользователь
 
Регистрация: 31.05.2017
Сообщений: 18
По умолчанию функция IsUSBDevice

Всем привет!расскажите кто может о функции IsUSBDevice c++(что делает ,какие модули необходимо подключать).
Beslan_AG вне форума Ответить с цитированием
Старый 31.05.2017, 16:19   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

В стандартных такой функции нет (вернее есть в интерфейсах, но я абсолютно уверен, что вы не про нее). Откуда она у вас и что там за функции используются?
p51x вне форума Ответить с цитированием
Старый 31.05.2017, 16:24   #3
Beslan_AG
Пользователь
 
Регистрация: 31.05.2017
Сообщений: 18
По умолчанию

Нашел прогу в инете по получению GUID флешки. Текст проги скопировал.При компиляции пишет ошибку Call to undefined function 'IsUSBDevice'.
Beslan_AG вне форума Ответить с цитированием
Старый 31.05.2017, 16:28   #4
Beslan_AG
Пользователь
 
Регистрация: 31.05.2017
Сообщений: 18
По умолчанию

вот текст
BOOL RemoveUSBDevice(int index)
{
GUID GUID_DEVCLASS_DISKDRIVE;
HDEVINFO DrivesPnPHandle;
SP_DEVINFO_DATA DevInfo;
DWORD Parent;

DrivesPnPHandle = SetupDiGetClassDevs(NULL, NULL, NULL, DIGCF_ALLCLASSES);
if(DrivesPnPHandle == INVALID_HANDLE_VALUE)exit(1);//вообще ни к чему
DevInfo.cbSize = sizeof(SP_DEVINFO_DATA); //эта строка свазана с нижеидущей из MSDN
if(SetupDiEnumDeviceInfo(DrivesPnPH andle, index, &DevInfo))//функция возвращает SP_DEVINFO_DATA структуру,
{ //которая определяет элемент с информацией об устройстве в наборе информации об устройстве.
Form4->ListBox1->Items->Add(Parent);

if (IsUSBDevice(DevInfo.DevInst) && (CM_Get_Parent(&Parent, DevInfo.DevInst,0) == CR_SUCCESS))
{
CM_Request_Device_Eject(Parent, NULL, NULL, NULL, NULL);
}
}
return FALSE;
}
Beslan_AG вне форума Ответить с цитированием
Старый 31.05.2017, 17:18   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Гуглим сигнатуру вашей функции и получаем:
Код:
BOOL IsUSBDevice(DWORD DevInst)
{
    DWORD size;
    LPBYTE pData;
    BOOL usb = FALSE;
    if (CM_Get_Device_ID_Size(&size, DevInst, 0) == CR_SUCCESS)
    {
        if (size)
        {
            pData = (LPBYTE)GlobalAlloc(GPTR, size + 1);
            if (pData)
            {
                if (CM_Get_Device_ID(DevInst, (PCHAR)pData, size + 1,0) == CR_SUCCESS)
                {
                    *(pData + 7) = 0x00;
                    if (!strcmp((char*)pData, "USBSTOR"))
                        usb = TRUE;
                }
                GlobalFree(pData);
            }
        }
    }
    return usb;
}
 
BOOL RemoveUSBDevice(int index)  //{f1ce5fad-7724-11e1-8fef-005056c00008} - GUID флешки моей
{
    //объявляем переменные
    GUID GUID_DEVCLASS_DISKDRIVE; //GUID чего-то... хз чего поидее флешки
    HDEVINFO DrivesPnPHandle;     //набор информации об устройстве
    SP_DEVINFO_DATA DevInfo;      //структура SP_DEVINFO_DATA определяет устройство
    DWORD Parent;
    //вызываем функции
    DrivesPnPHandle = SetupDiGetClassDevsA(&GUID_DEVCLASS_DISKDRIVE, NULL, NULL, 2);//возвращает указатель на набор информации об устройстве
    if(DrivesPnPHandle == INVALID_HANDLE_VALUE)exit(1);//вообще ни к чему
    DevInfo.cbSize = sizeof(SP_DEVINFO_DATA);                  //эта строка свазана с нижеидущей из MSDN
    if(SetupDiEnumDeviceInfo(DrivesPnPHandle, index, &DevInfo))//функция возвращает SP_DEVINFO_DATA структуру,
    {                       //которая определяет элемент с информацией об устройстве в наборе информации об устройстве.
        if (IsUSBDevice(DevInfo.DevInst) && (CM_Get_Parent(&Parent, DevInfo.DevInst,0) == CR_SUCCESS))
        {
            CM_Request_Device_Eject(Parent, NULL, NULL, NULL, NULL);
        }
    }
    return FALSE;
}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    RemoveUSBDevice(ListBox1->ItemIndex+1);
}
p51x вне форума Ответить с цитированием
Старый 01.06.2017, 21:35   #6
Beslan_AG
Пользователь
 
Регистрация: 31.05.2017
Сообщений: 18
По умолчанию

Спасибо
Beslan_AG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Си функция Pinguin007 Помощь студентам 2 26.05.2016 16:57
Функция... Uniskull C# (си шарп) 24 30.09.2011 14:06
Функция if jasul Помощь студентам 7 29.09.2011 12:23
Функция в VB asd48 Помощь студентам 1 25.12.2008 23:29
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50