Сейчас на форуме: hgdagon, asfa (+4 невидимых)

 eXeL@B —› Программирование —› Как БЫСТРО получить серийник первого IDE винта в NT-ях (хотя бы в Хрени?)
Посл.ответ Сообщение

Ранг: 218.5 (наставник), 2thx
Активность: 0.090
Статус: Участник

Создано: 13 июня 2006 14:10
· Личное сообщение · #1

Надежность не важна, т.е. можно и из реестра.
Главное побыстрее и без километровых кодов

Или опишите, плииз, вызов CreateFileA/DeviceIoConrtol со всеми ЦИФРОВЫМИ параметрами, без заумных констатн и типов.



Ранг: 79.4 (постоянный)
Активность: 0.090
Статус: Участник

Создано: 13 июня 2006 14:28
· Личное сообщение · #2

Private Declare Function GetVolumeSerialNumber Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long


Private Function VolumeSerialNumber(ByVal RootPath As String) As String
Dim VolLabel As String
Dim VolSize As Long
Dim Serial As Long
Dim MaxLen As Long
Dim Flags As Long
Dim Name As String
Dim NameSize As Long
Dim s As String
Dim ret As Boolean
ret = GetVolumeSerialNumber(RootPath, VolLabel, VolSize, Serial, MaxLen, Flags, Name, NameSize)
If ret Then
s = Format(Hex(Serial), "00000000")
VolumeSerialNumber = Left(s, 4) + "-" + Right(s, 4)
Else
VolumeSerialNumber = "0000-0000"
End If
End Function
на ВБ )



Ранг: 218.5 (наставник), 2thx
Активность: 0.090
Статус: Участник

Создано: 13 июня 2006 14:43 · Поправил: 0xy
· Личное сообщение · #3

d1v0x

VolumeSerialNumber -- эт не то
Нужен железный серийник IDE (Smart)

Вот как это выглядит для 9x, но я попробовал адаптировать и под NT (NON tested)


Option Explicit

Declare Function CreateFileA& Lib "kernel32" (ByVal fName$, _
Optional ByVal FAccess&, Optional ByVal FShare&, Optional Sequre As Any = 0, _
Optional ByVal CreateMode&, Optional ByVal Attrib&, Optional ByVal Template&)
Declare Function DeviceIoControl Lib "kernel32" (ByVal Handler&, _
ByVal Code&, inBuffer As Any, ByVal inBufSize&, OutBuffer As Any, _
ByVal OutBufSize&, Optional BytesReturned&, Optional Overlop As Any = 0) As Boolean
Private Declare Function FindCloseChangeNotification Lib "kernel32" (ByVal hObject&) As Boolean

Type OutType
GapStart(15) As Byte 'мусор в начале буфера
Info1(19) As Byte ' начало информационного сектора (256 байт)
sn As String * 20 ' серийник
Info2(87) As Byte '
Reserved(127) As Byte ' вторая часть сектора пока не используется
GapEnd(255) As Byte ' мусор в конце буфера (или 3 и 4-я части сектора?)
End Type
Private Const GENERIC_READ = &H80000000
Private Const GENERIC_WRITE = &H40000000
Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2
Private Const OPEN_EXISTING = 3
Private Const CREATE_NEW = 1

Public Function FirstIdeSN$(Optional OSPlatform As Byte = 2)
Dim FHandle&, InBuf(31) As Byte, OutBuf As OutType, BytesReturned&
InBuf(1) = &H2 ' готовим комманду запроса инфы о первом ide-винте
InBuf(5) = &H1
InBuf(6) = &H1
InBuf(9) = &HA0
InBuf(10) = &HEC

On Error GoTo ExitSub
Select Case OSPlatform
Case 1 ' Win 9x
FHandle = CreateFileA("\\.\SMARTVSD", , , , CREATE_NEW)

Case 2 ' Win NT
FHandle = CreateFileA("\\.\PhysicalDrive" & "0", _
GENERIC_READ Or GENERIC_WRITE, _
FILE_SHARE_READ Or FILE_SHARE_WRITE, _
ByVal 0&, _
OPEN_EXISTING, _
0&, _
0&)
End Select

If FHandle = -1 Then Exit Function
If FHandle = 0 Then Exit Function
If DeviceIoControl(FHandle, &H7C088, InBuf(0), 32, OutBuf, 528, BytesReturned) Then Else GoTo ExitSub
If BytesReturned = 0 Then GoTo ExitSub
FirstIdeSN = OutBuf.sn
ExitSub:
FindCloseChangeNotification (FHandle)
End Function






Ранг: 420.3 (мудрец)
Активность: 0.240
Статус: Участник

Создано: 13 июня 2006 14:52
· Личное сообщение · #4

0xy
Посмотри в аттаче, может подойдет

30ae_13.06.2006_CRACKLAB.rU.tgz - GetIdeDiskSerialNumber.rar

-----
Сколько ни наталкивали на мысль – все равно сумел увернуться




Ранг: 218.5 (наставник), 2thx
Активность: 0.090
Статус: Участник

Создано: 13 июня 2006 18:34
· Личное сообщение · #5

Пасиб, поковыряю (дотя делфя для меня--ИнЯз

А пока присобачил дополнение к своему варианту (исправил предыдущий пост)-- теперь вроде должно во всех осях работать
Будет время -- попробуй запустить, а то нету у меня NT под рукой. В 9x точно работает.

ЗЫ
А как можно узнать модель CD-Roma?




Ранг: 420.3 (мудрец)
Активность: 0.240
Статус: Участник

Создано: 13 июня 2006 19:03
· Личное сообщение · #6

0xy
Нет проблем. Учи ИнЯз

-----
Сколько ни наталкивали на мысль – все равно сумел увернуться




Ранг: 16.9 (новичок)
Активность: 0.010
Статус: Участник

Создано: 13 июня 2006 19:20
· Личное сообщение · #7

У меня есть целых три кода на Делфи. Выложу здесь все три, извиняюсь за три поста.

a0c2_13.06.2006_CRACKLAB.rU.tgz - ScsiSN.zip



Ранг: 16.9 (новичок)
Активность: 0.010
Статус: Участник

Создано: 13 июня 2006 19:21
· Личное сообщение · #8

Второй код

e694_13.06.2006_CRACKLAB.rU.tgz - IdeSN.zip



Ранг: 16.9 (новичок)
Активность: 0.010
Статус: Участник

Создано: 13 июня 2006 19:21
· Личное сообщение · #9

Третий код

941f_13.06.2006_CRACKLAB.rU.tgz - IdeSN2.zip



Ранг: 79.4 (постоянный)
Активность: 0.090
Статус: Участник

Создано: 15 июня 2006 14:19
· Личное сообщение · #10

кароч вот сорец на ВБ то, что ты просил...
у мя ХР показывает оба харда... на 9х - хз...

347b_15.06.2006_CRACKLAB.rU.tgz - Disk_Serial Number HARD.rar



Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 05 февраля 2007 07:58
· Личное сообщение · #11

В продолжение темы...
А как можно определить, на каком физическом диске находится тот или иной логический раздел (чтобы потом можно было вытащить серийник, используя IdeSN)?



Ранг: 8.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 06 февраля 2007 10:13
· Личное сообщение · #12

ребята, тут все такие умные...
подскажите как на пользовательском уровне получить сериал scsi винта, а?!



Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 07 февраля 2007 05:20
· Личное сообщение · #13

YoungBastard, в глазки долбишься? седьмой пост с конца



Ранг: 309.8 (мудрец), 21thx
Активность: 0.170
Статус: Участник

Создано: 07 февраля 2007 06:07
· Личное сообщение · #14

можно ещё поковырять генерацию hwid аспра

-----
Shalom ebanats!




Ранг: 8.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 07 февраля 2007 09:14 · Поправил: YoungBastard
· Личное сообщение · #15

Av0id
я видел этот код 1000 раз, но он меня не устраивает

меня интересует код который сможет без использования SMART и WMI на пользовательском уровне с самыми низкими привилегиями получать серийники SCSI винтов без использования сторонних драйверов.

если кто знает как такое осуществить, то буду благодарен

а на счет hwid у аспра это мысль...


 eXeL@B —› Программирование —› Как БЫСТРО получить серийник первого IDE винта в NT-ях (хотя бы в Хрени?)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати