Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[win32] ищи в msdn вот это:vwin32_dioc_dos_ioctl 22.02.02 12:18 Число просмотров: 1094
Автор: Zef <Alloo Zef> Статус: Elderman
|
я делал так:
typedef struct _DIOC_REGISTERS {
DWORD reg_EBX;
DWORD reg_EDX;
DWORD reg_ECX;
DWORD reg_EAX;
DWORD reg_EDI;
DWORD reg_ESI;
DWORD reg_Flags;
} DIOC_REGISTERS, *PDIOC_REGISTERS;
typedef struct _DISKIO
{
DWORD dwStartSector; // starting logical sector number
WORD wSectors; // number of sectors
DWORD dwBuffer; // address of read/write buffer
} DISKIO, * PDISKIO;
BOOL ReadLogicalSectors (HANDLE hDev, BYTE bDrive, DWORD dwStartSector,
WORD wSectors, LPBYTE lpSectBuff)
{
BOOL fResult;
DWORD cb;
DIOC_REGISTERS reg = {0};
DISKIO dio = {0};
dio.dwStartSector = dwStartSector;
dio.wSectors = wSectors;
dio.dwBuffer = (DWORD)lpSectBuff;
reg.reg_EAX = 0x7305; //DOS Abs_Disk_Read
reg.reg_EBX = (DWORD)&dio;
reg.reg_ECX = -1; // use DISKIO struct
reg.reg_ESI = 0;//Read (for write - 1)
reg.reg_EDI = bDrive - 1;
fResult = DeviceIoControl(hDev, VWIN32_DIOC_DOS_IOCTL,
®, sizeof(reg),
®, sizeof(reg), &cb, 0);
// Determine if the DeviceIoControl call and the read succeeded.
fResult = fResult && !(reg.reg_Flags & CARRY_FLAG);
return fResult;
}
хендл получал вышеописанным способом. Винт оно читает, CD - нет
|
|
|