C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 169 - Чтение секторов с диска в Win32 / Win 32 API / Win32 API

Шаг 169 - Чтение секторов с диска в Win32

Сектора с диска в Win32 читаются точно так же, как и в DOS "Шаг 21 - Функция абсолютного чтения с диска 25h". Только придется нам использовать DeviceIoControl, читайте "Шаг 167 - Понимание функции DeviceIoControl". Итак, вся проблема в том какая функция, вот она:

#define VWIN32_DIOC_DOS_INT25 2

Аналог функции из DOS. Осталось только настроить регистры и вперед.

#include "stdafx.h"
#include "windows.h"
#include "iostream.h"

typedef struct DIOCRegs {
	DWORD reg_EBX;
	DWORD reg_EDX;
	DWORD reg_ECX;
	DWORD reg_EAX;
	DWORD reg_EDI;
	DWORD reg_ESI;
	DWORD reg_Flags;      
} DIOC_REGISTERS;


#define VWIN32_DIOC_DOS_INT25 2

void main()
{
	HANDLE hDevice;
	hDevice = CreateFile("\\\\.\\vwin32", 0, 0, NULL,
		0,FILE_FLAG_DELETE_ON_CLOSE, NULL);
	if (hDevice != INVALID_HANDLE_VALUE)
	{
		DWORD dw;
		BOOL result;

		DIOC_REGISTERS reg;

		char data[512];
	
		reg.reg_EAX = 3;
		reg.reg_ECX = 1;
		reg.reg_EDX = 0;
		reg.reg_EBX =(unsigned long) &data;
		result = DeviceIoControl(hDevice,VWIN32_DIOC_DOS_INT25,
			&reg, sizeof(reg),&reg, sizeof(reg), &dw, 0);
		if (result != 0) 
		{
			cout << "Ok - " << endl;
			cout << data << endl;
		}
		else
		{
			cout << GetLastError() << endl;
			cout << "Error" << endl;
		}
		CloseHandle(hDevice);
	}
	else cout << "Error Open " << endl;
}

И результат смотрим точно такой, как и при использовании TASM. Но есть одно, но Вы видите не всю строку, так как среди прочитанных данных есть символ окончания строки.

169_1.gif (3301 b)


| |
Автор Каев Артем.
[AD]