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

Обнаружение USB устройств с последующим их безопасным извлечением - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов http://www.cyberforum.ru/cpp-beginners/thread335431.html
Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов
C++ Изменение значения переменной во время исполнения Задача: Преобразовать введенный с клавиатуры массив таким образом, чтобы в первой его половине располагались элементы , имевшие нечетный индекс, а во второй - четный. Код такой: #include <iostream> using namespace std; int main(int argc, char **argv) { int n; cout<<"Введите кол-во элементов массива "<<endl; cin>>n; http://www.cyberforum.ru/cpp-beginners/thread335420.html
C++ Скорость функций с ссылками
Всем привет. Интересует способ организации функции для более быстрого передачи данных. Дана функция которая дополняет вектор битов нулями в конце, если количество бит не кратно некому числу. Вариант 1: Используются ссылки. private: void static add_bits(const std::vector <boost::uint8_t> & VectorInput, std::vector <boost::uint8_t> & VectorOutput,
Решить систему алгебраических линейных неоднородных уравнени C++
У меня есть система линейных уравнений. В ней 4000 уравнений. Киньте плиз код для её решения. Желательно, чтобы он был максимально быстрым.
C++ Английские и русские буквы. http://www.cyberforum.ru/cpp-beginners/thread335375.html
Здравствуйте! Подскажите пожалуйста, как в С отличить русские буквы от английских? Я думаю что надо оперировать с кодами букв, но как именно-не соображу. Добавлено через 18 минут /* * File: main.cpp * Author: alchemist * Больше свинок для науки!
C++ Что делается этимим строчками void main() { srand((unsigned)time(NULL)); setlocale(0, ""); ..... } подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
28.07.2011, 10:42     Обнаружение USB устройств с последующим их безопасным извлечением
>arty<, привожу премер Си проекта основанного на твоей логике обнаружения съёмных носителей.
Для создания каталога на флеш использую системную команду MKDIR. Суть работы программы следующая, при обнаружении съёмного носителя она будет пытаться создавать в его корне папку USB_DETECT в указанную папку будет скопирован файл USB_INFO.txt из каталога sTempPath
C++
1
GetTempPath(MAX_PATH,sTempPath)
/ USB_INFO.txt содержит в себе информацию о съёмном носителе полученную посредством GetVolumeInformation. Тайм-аут вызова
C++
1
GetLogicalDriveStrings(MAX_PATH,sDRIVES)
задаётся в функции
C++
1
Sleep(1000);
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
#include <windows.h>
#include <direct.h>
#include <stdio.h>
 
void GetDrives();
void GetDriveInfo(LPCTSTR sInfoPath, LPCTSTR sDRIVE);
bool CreateDir(LPCTSTR sDRIVE, LPCTSTR sDIR, char * szPath);
 
int main()
{
    printf("PROGRAM START\r\n");
    while(true)
    {
        GetDrives();
        Sleep(1000);
    }
    return 0;
}
 
void GetDrives()
{
    char sDRIVES[MAX_PATH];
    char szPath[MAX_PATH];
    DWORD len = GetLogicalDriveStrings(MAX_PATH,sDRIVES);
    for(int i = 0; i < len; i += 4)
    {
        if(!strchr(&sDRIVES[i],'A'))
        if (GetDriveType(&sDRIVES[i]) == DRIVE_REMOVABLE)
        {
            if(CreateDir(&sDRIVES[i],"USB_DETECT",szPath))
                printf("\r\nDIR: %s CREATED\r\n",szPath);
            else
                printf("DIR: %s NOT CREATED\r\n",szPath);
            printf("\tVOLUME INFORMATION\r\n");
            GetDriveInfo(strcat(szPath,"\\USB_INFO.txt"),&sDRIVES[i]);
        }
    }
}
 
void GetDriveInfo(LPCTSTR sInfoPath, LPCTSTR sDRIVE)
{
    FILE * f;
    char sTempPath[MAX_PATH];
    char sVolName[MAX_PATH];
    char sFSysName[MAX_PATH];
    DWORD dwSerial;
    DWORD dwMaxLen;
    DWORD dwSysFlag;
    GetTempPath(MAX_PATH,sTempPath);
    if(!(f = fopen(strcat(sTempPath,"USB_INFO.txt"),"wb+")))
        printf("ERROR ACCESS %s\r\n",sInfoPath);
    else
    {
        if(GetVolumeInformation
            (
                sDRIVE,
                sVolName,
                MAX_PATH,
                &dwSerial,
                &dwMaxLen,
                &dwSysFlag,
                sFSysName,
                MAX_PATH
            )
        )
        fprintf(f,"\t%s\r\n","USB_DETECT InfoFile:");
        fprintf(f,"DRIVE   : %s\r\n",sDRIVE);
        fprintf(f,"VOLNAME : %s\r\n",sVolName);
        fprintf(f,"SERIAL# : 0x%p\r\n",dwSerial);
        fprintf(f,"MAXLEN  : 0x%p\r\n",dwMaxLen);
        fprintf(f,"FSFlag  : 0x%p\r\n",dwSysFlag);
        fprintf(f,"FSystem : %s\r\n",sFSysName);
        fclose(f);
 
        if(CopyFile(sTempPath,sInfoPath,false))
            printf(">INFOFile %s CREATED\r\n",sInfoPath);
        else
            printf(">INFOFile %s NOT CREATED\r\n",sInfoPath);
 
        printf("DRIVE   : %s\r\n",sDRIVE);
        printf("VOLNAME : %s\r\n",sVolName);
        printf("SERIAL# : 0x%p\r\n",dwSerial);
        printf("MAXLEN  : 0x%p\r\n",dwMaxLen);
        printf("FSFlag  : 0x%p\r\n",dwSysFlag);
        printf("FSystem : %s\r\n",sFSysName);
    }
}
 
bool CreateDir(LPCTSTR sDRIVE, LPCTSTR sDIR, char * szPath)
{
    bool bRet = false;
    char sCMD[MAX_PATH];
    if(szPath)
    {
        sprintf(szPath,"%s%s",sDRIVE,sDIR);
        sprintf(sCMD,"MKDIR %s",szPath);
        if(/*mkdir(szPath)*/system(sCMD))
            bRet = true;
    }
    return bRet;
 
}
Миниатюры
Обнаружение USB устройств с последующим их безопасным извлечением  
Вложения
Тип файла: rar USB_DETECT.exe.rar (16.5 Кб, 35 просмотров)
 
Текущее время: 20:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru