Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Мастера как можно определить КЕМ СДЕЛАН винчестер и ;ID [D5, Win2k]


Dimich1978 ©   (2002-10-21 11:59:00) 

Вот и все.


Dimich1978   (2002-10-21 13:19:00) [1]

Если кому интересно, под Паскаль есть такая фича как определение ID винчестера....нашел в инете
http://www.osp.ru/pcworld/1999/04/105lis14.htm


Dimich1978   (2002-10-21 12:25:00) [2]

Да на С++ есть, а вот под Делфи...толком ничего. Попробовать перевести тока с С++, но его еще знать надо...а с этим у меня проблема. Так общий смысл


Ученик   (2002-10-21 12:19:00) [3]

http://www.sources.ru/cpp/system/devid.shtml


REA   (2002-10-21 12:17:00) [4]

Да это из драйвера какого-то кусок. Оно вообще на Delphi не смотрится.


Игорь Шевченко   (2002-10-21 12:14:00) [5]

REA © (21.10.02 12:06)

В переводе на Delphi это особенно рулезно смотрится.


iNew   (2002-10-21 12:12:00) [6]

Попробуй поискать в реестре.


REA   (2002-10-21 12:06:00) [7]

Наврал наверно. Вот кусок который MBR читает. Может пригодится.

NTSTATUS MSJReadDriveZeroMasterBootRecord(PUCHAR pBuffer)
{
NTSTATUS ntStatus;
UNICODE_STRING uszDeviceName;
PFILE_OBJECT fileObject;
PDEVICE_OBJECT pDriveDeviceObject;


// Initialize unicode string
RtlInitUnicodeString(&uszDeviceName, L"\\DosDevices\\PhysicalDrive0");

// Get a pointer to PhysicalDrive0
ntStatus = IoGetDeviceObjectPointer(&uszDeviceName,
FILE_READ_ATTRIBUTES,
&fileObject,
&pDriveDeviceObject);

// If the device object pointer is valid...
if(NT_SUCCESS(ntStatus))
{
IO_STATUS_BLOCK ioStatus;
KEVENT event;
PIRP pIrp;

LARGE_INTEGER sectorNum;


KeInitializeEvent(&event, NotificationEvent, FALSE);


sectorNum.LowPart = sectorNum.HighPart = 0;

pIrp = IoBuildSynchronousFsdRequest(IRP_MJ_READ,
pDriveDeviceObject,
pBuffer,
512,
§orNum,
&event,
&ioStatus);

if(!pIrp)
return FALSE;

ntStatus = IoCallDriver(pDriveDeviceObject, pIrp);

if(ntStatus == STATUS_PENDING)
{
KeWaitForSingleObject(&event, Suspended, KernelMode, FALSE, NULL);
ntStatus = ioStatus.Status;
}

if(!NT_SUCCESS(ntStatus))
return ntStatus;


// Ditch the fileObject pointer created earlier
ObDereferenceObject(fileObject);
}

return ntStatus;
}


REA   (2002-10-21 12:00:00) [8]

Видел вроде такую шнягу: под W98 залезть в порты. Под NT написать драйвер и залезть в порты.


Наверх

Титульная страница Поиск, карта сайта Написать письмо