function GetDeviceHandle(sDeviceName: string): THandle;
begin
Result := CreateFile(PChar('\\.\' + sDeviceName),
GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE,
nil, OPEN_EXISTING, 0, 0)
end;
Программа на Delphi, которая отображает серийный номер SCSI-жесткого диска (HDD) или CD-ROM устройства, подключенного к системе. Программа использует Windows API и функцию DeviceIoControl для отправки SCSI-запроса устройству и получения его серийного номера.
Вот шаг за шагом, как работает программа:
Программа определяет два функциона: GetDeviceHandle и ScsiHddSerialNumber. Первая возвращает handle к указанному устройству, а вторая отправляет SCSI-запрос на устройство и получает его серийный номер.
В основной части программы пользователь приглашается ввести имя устройства, которое он хочет запросить (например, "PhysicalDrive0" или "Cdrom0").
Функция GetDeviceHandle вызывается с именем устройства, введенным пользователем, и возвращает handle к устройству.
Если handle устройства является действительным, программа вызывает функцию ScsiHddSerialNumber, чтобы отправить SCSI-запрос на устройство и получить его серийный номер.
Функция ScsiHddSerialNumber отправляет команду INQUIRY на устройство, которая возвращает важные данные продукта (VPD), включая серийный номер устройства.
Если VPD успешно получен, программа извлекает серийный номер из буфера и отображает его пользователю.
Программа использует следующие SCSI-запросы:
SCSIOP_INQUIRY (0x12): Получает информацию VPD о устройстве, включая его серийный номер.
CDB_Inquiry_EVPD (0x01): Определяет, что команда inquiry должна возвращать EVPD-информацию.
Программа также использует следующие функции Windows API:
CreateFile: Открывает файл или handle устройства.
DeviceIoControl: Отправляет код I/O на устройство.
CloseHandle: Закрывает handle устройства.
Чтобы запустить эту программу, скомпилируйте ее с Delphi и выполните ее из командной строки, передав имя устройства, которое вы хотите запросить, как параметр (например, "PhysicalDrive0"). Программа отобразит серийный номер устройства, если она будет успешна.
Как получить информацию о SCSI дисках: можно использовать программу ScsiSN, которая позволяет отобразить серийный номер SCSI-харддиска.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.