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

Блокирование и доступ к флешке - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Мышь и изображения http://www.cyberforum.ru/cpp-beginners/thread565405.html
Всем привет! Немогу найти команды отвечающие за управление мышкой (курсором). Хочу написать программу, которая сама будет кликать в определенные места, а потом в появляющиеся объекты, если они будут заданы
C++ Нестандартные функции (сжимающие строку) Условие задачи. Написать и протестировать функцию, которая "сжимает" строку, удаляя из неё все пробелы. Символьная строка вводится с клавиатуры. В программе можно использовать стандартную функцию strlen (имя строки) из <string.h> , которая возвращает значение длины строки (количество символов в строке без нулевого байта) #include <stdio.h> char* remove_spaces(char* s) { int i = 0,... http://www.cyberforum.ru/cpp-beginners/thread565399.html
C++ Найти номер строки матрицы, в которой находится самая длинная серия одинаковых элементов
Вот полное задание: 1) количество столбцов, содержащих хотя бы один нулевой элемент; 2) номер строки, в которой находится самая длинная серия одинаковых элементов. с первым я разобрался, а со второй частью проблема, как нужно задать массив m... #include "stdafx.h" #include <iostream.h> #include <windows.h>
Собирательное название for, do и while C++
Как можно собирательно по-русски и по-английски обозвать for, do и while?
C++ Проблема с fwrite http://www.cyberforum.ru/cpp-beginners/thread565372.html
Подскажите пожалуйста. Столкнулся с такой проблемой, при попытки вывести в файл элементы массива, в файле оказываются абсолютно другие символы ( 6 \ ). void main(){ FILE *ptr; int mas={25 , 54, 92, 10}; ptr=fopen("first.txt","w"); fwrite(mas, sizeof(int), 4, ptr); fclose(ptr); }
C++ Ряд Тейлора Помогите пожалуйста с решением задачи: Дано действительное число x. Вычислить значение y с помощью стандартной функции и с помощью ряда с точностью 0,0001. Пример во вложении. Не могу разобраться с результатами, при х=1 значения совпадают, а вот при других значениях х, результаты разные. подробнее

Показать сообщение отдельно
raxp
10140 / 6527 / 475
Регистрация: 28.12.2010
Сообщений: 21,167
Записей в блоге: 1
10.05.2012, 19:36     Блокирование и доступ к флешке
Цитата Сообщение от voral
А винда позволит это сделать?
надо знать как ...CreateFile() и DeviceIOControl()

Цитата Сообщение от nonick666
как на С++ подобраться низкоуровнево к разделу. В идеале конечно на C#
это WinAPI, язык не имеет значения.

Вот кусок низкоуровневого чтения-записи в терминах Delphi (это из mxAPI):
Delphi
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
type
  TDiskGeometry = packed record
    Cylinders: Int64;           // количество цилидров
    MediaType: DWORD;           // тип носителя
    TracksPerCylinder: DWORD;   // дорожек на цилиндре
    SectorsPerTrack: DWORD;     // секторов на дорожке
    BytesPerSector: DWORD;      // байт в секторе
  end;
  TPartitionTableEntry = packed record
    BootIndicator: Byte;          // $80, если активный (загрузочный) раздел
    StartingHead: Byte;
    StartingCylAndSect: Word;
    SystemIndicator: Byte;
    EndingHead: Byte;
    EndingCylAndSect: Word;
    StartingSector: DWORD;        // начальный сектор
    NumberOfSects: DWORD;         // количество секторов
  end;
  TPartitionTable = packed array [0..3] of TPartitionTableEntry;
  PDriveInfo = ^TDriveInfo;
  TDriveInfo = record
    PartitionTable: TPartitionTable;
    LogicalDrives: array [0..3] of PDriveInfo;
  end;
  TPhysicalDrives = array of TDriveInfo;
 
const
  PartitionTableOffset = $1be;
  ExtendedPartitions = [5,$f];
 
  IOCTL_DISK_GET_DRIVE_GEOMETRY = $70000;
 
function ReadSectorsNT(DriveNumber: Byte; StartingSector, SectorCount: DWORD;
  Buffer: Pointer): DWORD;
var
  hFile: THandle;
  br,TmpLo,TmpHi: DWORD;
begin
  Result := 0;
  hFile := CreateFile(PChar('\\.\PhysicalDrive'+IntToStr(DriveNumber)),
    GENERIC_READ,FILE_SHARE_READ,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
  if hFile = INVALID_HANDLE_VALUE then Exit;
  TmpLo := __Mul(StartingSector,
    PhysicalDrives[DriveNumber].DiskGeometry.BytesPerSector,TmpHi);
  if SetFilePointer(hFile,TmpLo,@TmpHi,FILE_BEGIN) = TmpLo then
  begin
    SectorCount := SectorCount*PhysicalDrives[DriveNumber].DiskGeometry.BytesPerSector;
    if not ReadFile(hFile,Buffer^,SectorCount,br,nil) then Exit;
    Result := br;
  end;
  CloseHandle(hFile);
 
end;
 
 
procedure InitializeIO;
begin
 if WIN32PLATFORM <> VER_PLATFORM_WIN32_NT then
  begin
    CurDir := GetCurrentDir;
    SetLength(MyName,MAX_PATH);
    GetModuleFileName(hInstance,PChar(MyName),MAX_PATH);
    SetCurrentDir(ExtractFileDir(MyName));
    RawIoLib := LoadLibrary('RAWIO32.BIN');
    SetCurrentDir(CurDir);
    Finalize(MyName);
    EI13GetDriveParameters := GetProcAddress(RawIoLib,'EI13GetDriveParameters');
    EI13ReadSector := GetProcAddress(RawIoLib,'EI13ReadSector');
    EI13WriteSector := GetProcAddress(RawIoLib,'EI13WriteSector');
    ReadSectors := ReadSectors9x;
    WriteSectors := WriteSectors9x;
  end else
  begin
    ReadSectors := ReadSectorsNT;
    WriteSectors := WriteSectorsNT;
  end;
  GetDrivesInfo(PhysicalDrives);
end;
 
 
function __Mul(a,b: DWORD; var HiDWORD: DWORD): DWORD; // Result = LoDWORD
asm
  mul edx
  mov [ecx],edx
end;
 
 
function WriteSectors(DriveNumber: Byte; StartingSector, SectorCount: DWORD;
  Buffer: Pointer; BytesPerSector: DWORD = 512): DWORD;
var
  hFile: THandle;
  bw,TmpLo,TmpHi: DWORD;
begin
  Result := 0;
  hFile := CreateFile(PChar('\\.\PhysicalDrive'+IntToStr(DriveNumber)),
    GENERIC_WRITE,FILE_SHARE_READ,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
  if hFile = INVALID_HANDLE_VALUE then Exit;
  TmpLo := __Mul(StartingSector,BytesPerSector,TmpHi);
  if SetFilePointer(hFile,TmpLo,@TmpHi,FILE_BEGIN) = TmpLo then
  begin
    SectorCount := SectorCount*BytesPerSector;
    if not WriteFile(hFile,Buffer^,SectorCount,bw,nil) then Exit;
    Result := bw;
  end;
  CloseHandle(hFile);
end;
Цитата Сообщение от nonick666
1. Необходима полностью своя разработка
2. В исходниках TrueCrypt пытался было дело разобраться ещё на 3м курсе, да так и не вышло у меня ((
1- плагин полностью будет ваш, чем плохо? И проект солидный. Велосипед изобретать с нуля без знаний, без наработок?
2- не вы первый, не вы последний, люди же как то разбираются (пример таких могу в личку)

Цитата Сообщение от nonick666
Это я знаю. В том то и задача, чтоб попробовать осуществить это программно. На данном этапе просто для пробы.
это нельзя сэмулировать программно, там аппаратный контроллер с вшитым алгоритмом, он взаимодействует со своим драйвером ...а вы всего лишь хотите свою файловую систему создать, это не одно и то же.
 
Текущее время: 11:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru