Win32 API kullanarak bir bilgisayardaki tüm sabit disklerin seri numarasını almanın kolay bir yolu var mı?Sabit disklerden seri numarası nasıl alınır?
cevap
GetVolumeInformation sizin arkadaşınız.
GetVolumeInformation() size yalnızca birim hacminin seri numarasını verecektir. Disk hacmi! = Sabit disk. Birim seri, diskin biçimlendirildiği zamandan tipik olarak yalnızca 32 bitlik bir zaman damgasıdır. –
Haklısınız. –
Cilt ID'si% 101 güvenilmezdir, çünkü kolayca değiştirilebilir! – Ampere
GetVolumeInformation
değil bütün HDD ile ilgili, sadece bölüm veya hacmi hakkında bilgi verecektir.
Bilgi almak için DeviceIoControl
işlevini kullanmalısınız.
olası kod: Daha sonra 1 sabit diskler yüklüyse
#include <atlstr.h>
#include <Windows.h>
#include <winioctl.h>
BOOL getSerial(CString diskSerial) {
BOOL bResult = FALSE;
STORAGE_PROPERTY_QUERY storagePropertyQuery;
STORAGE_DESCRIPTOR_HEADER storageDescHeader = { 0 };
STORAGE_DEVICE_DESCRIPTOR *pDeviceDesc;
DWORD dwBytes = 0;
DWORD dwOutBufferSize = 0;
DWORD dwSerialNumberOffset = 0;
BYTE *pOutBuffer = nullptr;
ZeroMemory(&storagePropertyQuery, sizeof(STORAGE_PROPERTY_QUERY));
storagePropertyQuery.PropertyId = StorageDeviceProperty;
storagePropertyQuery.QueryType = PropertyStandardQuery;
HANDLE hDevice = CreateFile("\\\\.\\PhysicalDrive0", 0,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, 0, NULL);
if (hDevice == INVALID_HANDLE_VALUE) {
std::cout << "Can't get access to HDD.\nTerminating." << std::endl;
exit(EXIT_FAILURE);
}
bResult = DeviceIoControl(hDevice, IOCTL_STORAGE_QUERY_PROPERTY,
&storagePropertyQuery, sizeof(storagePropertyQuery),
&storageDescHeader, sizeof(storageDescHeader),
&dwBytes, NULL);
dwOutBufferSize = storageDescHeader.Size;
try {
pOutBuffer = new BYTE[dwOutBufferSize];
ZeroMemory(pOutBuffer, sizeof(pOutBuffer));
} catch (std::bad_alloc exp) {
CloseHandle(hDevice);
std::cout << exp.what() << std::endl;
return FALSE;
}
bResult = DeviceIoControl(hDevice, IOCTL_STORAGE_QUERY_PROPERTY,
&storagePropertyQuery, sizeof(STORAGE_PROPERTY_QUERY),
pOutBuffer, dwOutBufferSize, &dwBytes, NULL);
pDeviceDesc = (STORAGE_DEVICE_DESCRIPTOR *)pOutBuffer;
dwSerialNumberOffset = pDeviceDesc->SerialNumberOffset;
diskSerial = CString(pOutBuffer + dwSerialNumberOffset);
std::cout << "Serial Number: " << diskSerial << std::endl;
delete[] pOutBuffer;
CloseHandle(hDevice);
return TRUE;
}
u değişmelidir "\\\\.\\PhysicalDrive0"
"\\\\.\\PhysicalDrive1"
vb Win API ile
Bu soruya bir cevap olabilir. Eğer bir örnek koyarsanız (gelecekteki okuyucu için, linkin kırılması durumunda) daha iyi olacaktır. –
@PriyeshKumar Tavsiye için teşekkürler, sadece stackoverflow için yeni. – johnbrovi
- 1. Atmel UC3 - seri numarası nasıl alınır?
- 2. Seri numarası cihazdan alınma
- 3. WMI HDD Seri Numarası Transposed
- 4. NFC Seri Numarası (UID) - String
- 5. Bir sorguda seri numarası nasıl oluşturulur?
- 6. Seri numarasını nasıl oluştururum (kayıt numarası)?
- 7. Geçerli hat numarası nasıl alınır?
- 8. Angular.js sayfa numaralandırma sırasında seri numarası nasıl artırılır
- 9. Delphi ile Gerçek HDD Seri Numarası Alın
- 10. Uygulama Sürüm Numarası Kullanıcıdan Nasıl Alınır?
- 11. Facebook'taki Facebook kullanıcı telefon numarası nasıl alınır
- 12. Telefonun numarası React Native'da nasıl alınır?
- 13. C++ programında hata satırı numarası nasıl alınır
- 14. Araç ipucu yüksek şemalarında birden çok seri veri nasıl alınır?
- 15. Windows için OpenLDAP neden bir Seri Numarası soruyor?
- 16. Pdf ayrıştırma sırasında hedef dizeden sayfa numarası nasıl alınır
- 17. Nesne seri hale getirilemedi, çünkü 'Toplama sabit bir boyuttaydı.'
- 18. boost seri uyarı C4308: negatif ayrılmaz sabit işaretsiz türe dönüştürülür
- 19. SQL'de seri seri?
- 20. Sabit genişlikte metnin yüksekliği nasıl alınır ve bir çerçeveye uyan metin uzunluğu nasıl alınır?
- 21. Sonar taraması sırasında sabit sorunların listesi nasıl alınır
- 22. Enum öğelerinin sayısı sabit değer olarak nasıl alınır?
- 23. String.fromCharCode nasıl geri alınır?
- 24. Bir excel sayfasını yazdırırken son satırın satır numarası nasıl alınır (EPPlus)
- 25. iPhone'un seri numarasını nasıl programlı olarak alıyorsunuz?
- 26. Seri hızlandırma nasıl artırılır?
- 27. Android telefonumun iki SIM kartı varsa, mobil numaralar nasıl alınır?
- 28. Kişilerin nasıl alınır Android
- 29. Uluslararası Menkul Kıymetler Kimlik Numarası (ISIN) numarası nasıl doğrulanır?
- 30. Veri yığınları yüklenirken sayfa numarası değil sayfa numarası nasıl iletilir?
, NO. Özel bir düşük seviye (ASM) kitaplığı kullanmanız gerekir. – Ampere