亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? diskid32.cpp

?? DiskId32最新版 在NT/2000/XP/2003/VISTA下取PATA/SATA/SCSI)下支持獲取硬盤的系列號。 編譯需要Windows SDK
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
//  diskid32.cpp//  for displaying the details of hard drives in a command window//  06/11/00  Lynn McGuire  written with many contributions from others,//                            IDE drives only under Windows NT/2K and 9X,//                            maybe SCSI drives later//  11/20/03  Lynn McGuire  added ReadPhysicalDriveInNTWithZeroRights//  10/26/05  Lynn McGuire  fix the flipAndCodeBytes function//  01/22/08  Lynn McGuire  incorporate changes from Gonzalo Diethelm,//                             remove media serial number code since does //                             not work on USB hard drives or thumb drives//  01/29/08  Lynn McGuire  add ReadPhysicalDriveInNTUsingSmart#define PRINTING_TO_CONSOLE_ALLOWED#include <stdlib.h>#include <stdio.h>#include <stddef.h>#include <string.h>#include <windows.h>#include <winioctl.h>	//  special include from the MS DDK//#include "c:\win2kddk\inc\ddk\ntddk.h"//#include "c:\win2kddk\inc\ntddstor.h"#define  TITLE   "DiskId32"char HardDriveSerialNumber [1024];char HardDriveModelNumber [1024];int PRINT_DEBUG = false;static void dump_buffer (const char* title,			const unsigned char* buffer,			int len);void WriteConstantString (char *entry, char *string){}   //  Required to ensure correct PhysicalDrive IOCTL structure setup#pragma pack(1)#define  IDENTIFY_BUFFER_SIZE  512   //  IOCTL commands#define  DFP_GET_VERSION          0x00074080#define  DFP_SEND_DRIVE_COMMAND   0x0007c084#define  DFP_RECEIVE_DRIVE_DATA   0x0007c088#define  FILE_DEVICE_SCSI              0x0000001b#define  IOCTL_SCSI_MINIPORT_IDENTIFY  ((FILE_DEVICE_SCSI << 16) + 0x0501)#define  IOCTL_SCSI_MINIPORT 0x0004D008  //  see NTDDSCSI.H for definition#define SMART_GET_VERSION               CTL_CODE(IOCTL_DISK_BASE, 0x0020, METHOD_BUFFERED, FILE_READ_ACCESS)#define SMART_SEND_DRIVE_COMMAND        CTL_CODE(IOCTL_DISK_BASE, 0x0021, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)#define SMART_RCV_DRIVE_DATA            CTL_CODE(IOCTL_DISK_BASE, 0x0022, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)typedef struct _GETVERSIONINPARAMS {        UCHAR    bVersion;               // Binary driver version.        UCHAR    bRevision;              // Binary driver revision.        UCHAR    bReserved;              // Not used.        UCHAR    bIDEDeviceMap;          // Bit map of IDE devices.        ULONG   fCapabilities;          // Bit mask of driver capabilities.        ULONG   dwReserved[4];          // For future use.} GETVERSIONINPARAMS, *PGETVERSIONINPARAMS, *LPGETVERSIONINPARAMS;   //  GETVERSIONOUTPARAMS contains the data returned from the    //  Get Driver Version function.typedef struct _GETVERSIONOUTPARAMS{   BYTE bVersion;      // Binary driver version.   BYTE bRevision;     // Binary driver revision.   BYTE bReserved;     // Not used.   BYTE bIDEDeviceMap; // Bit map of IDE devices.   DWORD fCapabilities; // Bit mask of driver capabilities.   DWORD dwReserved[4]; // For future use.} GETVERSIONOUTPARAMS, *PGETVERSIONOUTPARAMS, *LPGETVERSIONOUTPARAMS;   //  Bits returned in the fCapabilities member of GETVERSIONOUTPARAMS #define  CAP_IDE_ID_FUNCTION             1  // ATA ID command supported#define  CAP_IDE_ATAPI_ID                2  // ATAPI ID command supported#define  CAP_IDE_EXECUTE_SMART_FUNCTION  4  // SMART commannds supported   //  IDE registerstypedef struct _IDEREGS{   BYTE bFeaturesReg;       // Used for specifying SMART "commands".   BYTE bSectorCountReg;    // IDE sector count register   BYTE bSectorNumberReg;   // IDE sector number register   BYTE bCylLowReg;         // IDE low order cylinder value   BYTE bCylHighReg;        // IDE high order cylinder value   BYTE bDriveHeadReg;      // IDE drive/head register   BYTE bCommandReg;        // Actual IDE command.   BYTE bReserved;          // reserved for future use.  Must be zero.} IDEREGS, *PIDEREGS, *LPIDEREGS;   //  SENDCMDINPARAMS contains the input parameters for the    //  Send Command to Drive function.typedef struct _SENDCMDINPARAMS{   DWORD     cBufferSize;   //  Buffer size in bytes   IDEREGS   irDriveRegs;   //  Structure with drive register values.   BYTE bDriveNumber;       //  Physical drive number to send                             //  command to (0,1,2,3).   BYTE bReserved[3];       //  Reserved for future expansion.   DWORD     dwReserved[4]; //  For future use.   BYTE      bBuffer[1];    //  Input buffer.} SENDCMDINPARAMS, *PSENDCMDINPARAMS, *LPSENDCMDINPARAMS;   //  Valid values for the bCommandReg member of IDEREGS.#define  IDE_ATAPI_IDENTIFY  0xA1  //  Returns ID sector for ATAPI.#define  IDE_ATA_IDENTIFY    0xEC  //  Returns ID sector for ATA.   // Status returned from drivertypedef struct _DRIVERSTATUS{   BYTE  bDriverError;  //  Error code from driver, or 0 if no error.   BYTE  bIDEStatus;    //  Contents of IDE Error register.                        //  Only valid when bDriverError is SMART_IDE_ERROR.   BYTE  bReserved[2];  //  Reserved for future expansion.   DWORD  dwReserved[2];  //  Reserved for future expansion.} DRIVERSTATUS, *PDRIVERSTATUS, *LPDRIVERSTATUS;   // Structure returned by PhysicalDrive IOCTL for several commandstypedef struct _SENDCMDOUTPARAMS{   DWORD         cBufferSize;   //  Size of bBuffer in bytes   DRIVERSTATUS  DriverStatus;  //  Driver status structure.   BYTE          bBuffer[1];    //  Buffer of arbitrary length in which to store the data read from the                                                       // drive.} SENDCMDOUTPARAMS, *PSENDCMDOUTPARAMS, *LPSENDCMDOUTPARAMS;   // The following struct defines the interesting part of the IDENTIFY   // buffer:typedef struct _IDSECTOR{   USHORT  wGenConfig;   USHORT  wNumCyls;   USHORT  wReserved;   USHORT  wNumHeads;   USHORT  wBytesPerTrack;   USHORT  wBytesPerSector;   USHORT  wSectorsPerTrack;   USHORT  wVendorUnique[3];   CHAR    sSerialNumber[20];   USHORT  wBufferType;   USHORT  wBufferSize;   USHORT  wECCSize;   CHAR    sFirmwareRev[8];   CHAR    sModelNumber[40];   USHORT  wMoreVendorUnique;   USHORT  wDoubleWordIO;   USHORT  wCapabilities;   USHORT  wReserved1;   USHORT  wPIOTiming;   USHORT  wDMATiming;   USHORT  wBS;   USHORT  wNumCurrentCyls;   USHORT  wNumCurrentHeads;   USHORT  wNumCurrentSectorsPerTrack;   ULONG   ulCurrentSectorCapacity;   USHORT  wMultSectorStuff;   ULONG   ulTotalAddressableSectors;   USHORT  wSingleWordDMA;   USHORT  wMultiWordDMA;   BYTE    bReserved[128];} IDSECTOR, *PIDSECTOR;typedef struct _SRB_IO_CONTROL{   ULONG HeaderLength;   UCHAR Signature[8];   ULONG Timeout;   ULONG ControlCode;   ULONG ReturnCode;   ULONG Length;} SRB_IO_CONTROL, *PSRB_IO_CONTROL;   // Define global buffers.BYTE IdOutCmd [sizeof (SENDCMDOUTPARAMS) + IDENTIFY_BUFFER_SIZE - 1];char *ConvertToString (DWORD diskdata [256],		       int firstIndex,		       int lastIndex,		       char* buf);void PrintIdeInfo (int drive, DWORD diskdata [256]);BOOL DoIDENTIFY (HANDLE, PSENDCMDINPARAMS, PSENDCMDOUTPARAMS, BYTE, BYTE,                 PDWORD);   //  Max number of drives assuming primary/secondary, master/slave topology#define  MAX_IDE_DRIVES  16int ReadPhysicalDriveInNTWithAdminRights (void){   int done = FALSE;   int drive = 0;   for (drive = 0; drive < MAX_IDE_DRIVES; drive++)   {      HANDLE hPhysicalDriveIOCTL = 0;         //  Try to get a handle to PhysicalDrive IOCTL, report failure         //  and exit if can't.      char driveName [256];      sprintf (driveName, "\\\\.\\PhysicalDrive%d", drive);         //  Windows NT, Windows 2000, must have admin rights      hPhysicalDriveIOCTL = CreateFile (driveName,                               GENERIC_READ | GENERIC_WRITE,                                FILE_SHARE_READ | FILE_SHARE_WRITE , NULL,                               OPEN_EXISTING, 0, NULL);      // if (hPhysicalDriveIOCTL == INVALID_HANDLE_VALUE)      //    printf ("Unable to open physical drive %d, error code: 0x%lX\n",      //            drive, GetLastError ());      if (hPhysicalDriveIOCTL == INVALID_HANDLE_VALUE)      {#ifdef PRINTING_TO_CONSOLE_ALLOWED         if (PRINT_DEBUG) 			 printf ("\n%d ReadPhysicalDriveInNTWithAdminRights ERROR"					 "\nCreateFile(%s) returned INVALID_HANDLE_VALUE\n",		 			 __LINE__, driveName);#endif      }      else      {         GETVERSIONOUTPARAMS VersionParams;         DWORD               cbBytesReturned = 0;            // Get the version, etc of PhysicalDrive IOCTL         memset ((void*) &VersionParams, 0, sizeof(VersionParams));         if ( ! DeviceIoControl (hPhysicalDriveIOCTL, DFP_GET_VERSION,                   NULL,                    0,                   &VersionParams,                   sizeof(VersionParams),                   &cbBytesReturned, NULL) )         {         #ifdef PRINTING_TO_CONSOLE_ALLOWED            if (PRINT_DEBUG)            {	           DWORD err = GetLastError ();	           printf ("\n%d ReadPhysicalDriveInNTWithAdminRights ERROR"		               "\nDeviceIoControl(%d, DFP_GET_VERSION) returned 0, error is %d\n",		               __LINE__, (int) hPhysicalDriveIOCTL, (int) err);		    }#endif         }            // If there is a IDE device at number "i" issue commands            // to the device         if (VersionParams.bIDEDeviceMap <= 0)         {#ifdef PRINTING_TO_CONSOLE_ALLOWED            if (PRINT_DEBUG)	            printf ("\n%d ReadPhysicalDriveInNTWithAdminRights ERROR"		                "\nNo device found at position %d (%d)\n",		                __LINE__, (int) drive, (int) VersionParams.bIDEDeviceMap);#endif         }         else         {            BYTE             bIDCmd = 0;   // IDE or ATAPI IDENTIFY cmd            SENDCMDINPARAMS  scip;            //SENDCMDOUTPARAMS OutCmd;			   // Now, get the ID sector for all IDE devices in the system.               // If the device is ATAPI use the IDE_ATAPI_IDENTIFY command,               // otherwise use the IDE_ATA_IDENTIFY command            bIDCmd = (VersionParams.bIDEDeviceMap >> drive & 0x10) ? \                      IDE_ATAPI_IDENTIFY : IDE_ATA_IDENTIFY;            memset (&scip, 0, sizeof(scip));            memset (IdOutCmd, 0, sizeof(IdOutCmd));            if ( DoIDENTIFY (hPhysicalDriveIOCTL,                        &scip,                        (PSENDCMDOUTPARAMS)&IdOutCmd,                        (BYTE) bIDCmd,                       (BYTE) drive,                       &cbBytesReturned))            {               DWORD diskdata [256];               int ijk = 0;               USHORT *pIdSector = (USHORT *)                             ((PSENDCMDOUTPARAMS) IdOutCmd) -> bBuffer;               for (ijk = 0; ijk < 256; ijk++)                  diskdata [ijk] = pIdSector [ijk];               PrintIdeInfo (drive, diskdata);               done = TRUE;            }	    }         CloseHandle (hPhysicalDriveIOCTL);      }   }   return done;}//// IDENTIFY data (from ATAPI driver source)//#pragma pack(1)typedef struct _IDENTIFY_DATA {    USHORT GeneralConfiguration;            // 00 00    USHORT NumberOfCylinders;               // 02  1    USHORT Reserved1;                       // 04  2    USHORT NumberOfHeads;                   // 06  3    USHORT UnformattedBytesPerTrack;        // 08  4    USHORT UnformattedBytesPerSector;       // 0A  5    USHORT SectorsPerTrack;                 // 0C  6    USHORT VendorUnique1[3];                // 0E  7-9    USHORT SerialNumber[10];                // 14  10-19    USHORT BufferType;                      // 28  20    USHORT BufferSectorSize;                // 2A  21    USHORT NumberOfEccBytes;                // 2C  22    USHORT FirmwareRevision[4];             // 2E  23-26    USHORT ModelNumber[20];                 // 36  27-46    UCHAR  MaximumBlockTransfer;            // 5E  47    UCHAR  VendorUnique2;                   // 5F    USHORT DoubleWordIo;                    // 60  48    USHORT Capabilities;                    // 62  49    USHORT Reserved2;                       // 64  50    UCHAR  VendorUnique3;                   // 66  51    UCHAR  PioCycleTimingMode;              // 67    UCHAR  VendorUnique4;                   // 68  52    UCHAR  DmaCycleTimingMode;              // 69    USHORT TranslationFieldsValid:1;        // 6A  53    USHORT Reserved3:15;    USHORT NumberOfCurrentCylinders;        // 6C  54    USHORT NumberOfCurrentHeads;            // 6E  55    USHORT CurrentSectorsPerTrack;          // 70  56    ULONG  CurrentSectorCapacity;           // 72  57-58    USHORT CurrentMultiSectorSetting;       //     59    ULONG  UserAddressableSectors;          //     60-61    USHORT SingleWordDMASupport : 8;        //     62    USHORT SingleWordDMAActive : 8;    USHORT MultiWordDMASupport : 8;         //     63    USHORT MultiWordDMAActive : 8;    USHORT AdvancedPIOModes : 8;            //     64    USHORT Reserved4 : 8;    USHORT MinimumMWXferCycleTime;          //     65    USHORT RecommendedMWXferCycleTime;      //     66    USHORT MinimumPIOCycleTime;             //     67    USHORT MinimumPIOCycleTimeIORDY;        //     68    USHORT Reserved5[2];                    //     69-70    USHORT ReleaseTimeOverlapped;           //     71    USHORT ReleaseTimeServiceCommand;       //     72    USHORT MajorRevision;                   //     73    USHORT MinorRevision;                   //     74    USHORT Reserved6[50];                   //     75-126    USHORT SpecialFunctionsEnabled;         //     127    USHORT Reserved7[128];                  //     128-255} IDENTIFY_DATA, *PIDENTIFY_DATA;#pragma pack()int ReadPhysicalDriveInNTUsingSmart (void){   int done = FALSE;   int drive = 0;   for (drive = 0; drive < MAX_IDE_DRIVES; drive++)   {      HANDLE hPhysicalDriveIOCTL = 0;         //  Try to get a handle to PhysicalDrive IOCTL, report failure         //  and exit if can't.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产禁国产网站cc| 精品噜噜噜噜久久久久久久久试看| jvid福利写真一区二区三区| 欧美视频第二页| 国产精品进线69影院| 麻豆精品一区二区| 欧美日韩国产系列| 国产精品成人免费| 久久av资源网| 欧美一卡在线观看| 亚洲国产精品自拍| 色综合天天天天做夜夜夜夜做| 日韩欧美国产系列| 亚洲午夜私人影院| 91麻豆免费在线观看| 国产精品久久影院| 国产成人综合网站| 欧美精品一区二区在线播放| 日韩精品免费专区| 欧美三级在线视频| 亚洲永久免费av| 91免费在线视频观看| 国产精品久久久久婷婷| 国产米奇在线777精品观看| 日韩欧美国产一区二区三区| 天天亚洲美女在线视频| 欧美四级电影网| 亚洲成年人影院| 欧美性极品少妇| 性欧美疯狂xxxxbbbb| 欧美日韩一级黄| 日韩福利视频网| 91精品国产91久久久久久一区二区| 一区二区三区久久| 欧美视频中文字幕| 亚洲成av人片在线观看无码| 欧美日韩精品一区二区天天拍小说| 一区二区三区欧美日韩| 在线观看网站黄不卡| 一区二区三区四区不卡在线 | 亚洲免费观看高清完整版在线观看 | 日韩久久一区二区| 成人中文字幕合集| 国产精品白丝在线| 91蜜桃视频在线| 亚洲成人精品一区二区| 91免费国产在线观看| 亚洲精品视频在线观看网站| 色欧美片视频在线观看| 石原莉奈在线亚洲三区| 日韩欧美黄色影院| 成人妖精视频yjsp地址| 亚洲天堂a在线| 51精品国自产在线| 国产99久久久国产精品潘金| 最新成人av在线| 欧美乱妇15p| 国内外成人在线| |精品福利一区二区三区| 色综合色狠狠综合色| 日本一不卡视频| 久久麻豆一区二区| 日本韩国一区二区三区| 三级欧美在线一区| 国产午夜精品久久久久久免费视| 成人国产精品视频| 五月天欧美精品| 日本一区二区免费在线观看视频| 色综合亚洲欧洲| 久久av资源网| 亚洲综合色自拍一区| 久久综合资源网| 91国偷自产一区二区使用方法| 日产精品久久久久久久性色| 中文字幕国产精品一区二区| 欧美日韩电影一区| 成人国产精品视频| 麻豆成人综合网| 亚洲精选免费视频| 久久久久久97三级| 欧美色手机在线观看| 成人黄色av电影| 麻豆一区二区三| 亚洲图片一区二区| 国产欧美综合在线| 日韩一区二区三区高清免费看看| 91在线观看污| 国产做a爰片久久毛片| 五月天一区二区| 一区二区三区四区在线播放 | 欧美日韩一区二区在线视频| 成人一级视频在线观看| 蜜桃在线一区二区三区| 亚洲一区二区三区自拍| 国产精品久久久久久久久久久免费看| 欧美成人精精品一区二区频| 欧美精品自拍偷拍| 欧美综合在线视频| aaa亚洲精品一二三区| 国产精品一区二区男女羞羞无遮挡| 亚洲国产成人91porn| 亚洲老妇xxxxxx| 亚洲欧洲日产国产综合网| 国产亚洲成aⅴ人片在线观看 | 欧美大片国产精品| 欧美喷潮久久久xxxxx| 色综合欧美在线| 99精品视频在线免费观看| 国产电影精品久久禁18| 精品一区免费av| 久久精品999| 久久99精品久久久久| 美女视频免费一区| 麻豆精品蜜桃视频网站| 免费成人av资源网| 免费高清在线视频一区·| 日本一不卡视频| 美腿丝袜亚洲综合| 国产在线视频一区二区三区| 麻豆精品一二三| 国产二区国产一区在线观看| 国产ts人妖一区二区| 国产成人在线影院| 成人福利视频在线| 色婷婷av一区二区三区软件 | 欧美视频一区二区在线观看| 欧美视频一区二区三区| 日韩视频一区二区在线观看| 精品卡一卡二卡三卡四在线| 国产日韩av一区| 综合激情成人伊人| 亚洲成av人片一区二区| 日韩高清不卡一区二区| 韩国视频一区二区| 成人黄色软件下载| 欧美亚洲国产一区在线观看网站| 欧美日韩夫妻久久| 欧美不卡一区二区三区四区| 国产无遮挡一区二区三区毛片日本| 国产欧美日本一区视频| 亚洲欧美日韩在线播放| 日韩高清一区在线| 国产精品亚洲一区二区三区妖精| 不卡在线观看av| 欧美日本一区二区三区四区| 久久香蕉国产线看观看99| 国产精品久久久一区麻豆最新章节| 亚洲蜜臀av乱码久久精品蜜桃| 日本视频一区二区三区| 国产精品影视在线观看| 色www精品视频在线观看| 91精品福利在线一区二区三区 | 欧美日本韩国一区| 国产视频一区在线观看| 亚洲国产另类av| 国产成人啪免费观看软件| 91久久国产最好的精华液| 精品区一区二区| 亚洲综合激情另类小说区| 国产一区二区免费在线| 在线看不卡av| 国产精品久久影院| 免费精品99久久国产综合精品| 波多野结衣在线aⅴ中文字幕不卡| 欧美性猛交xxxx黑人交| 国产精品少妇自拍| 免费在线观看不卡| 色播五月激情综合网| 久久久久久久久久久久久女国产乱| 亚洲一区在线视频观看| 成人免费视频网站在线观看| 欧美一区二区三区色| 亚洲黄色小说网站| 国产91在线|亚洲| 精品久久久久久久久久久久久久久久久| 亚洲品质自拍视频| 成人美女视频在线看| 欧美成人性福生活免费看| 亚洲午夜私人影院| 99国产精品一区| 欧美高清在线一区| 国产成人在线视频网站| 欧美电视剧免费全集观看| 亚洲国产成人高清精品| 色先锋资源久久综合| 国产精品乱码妇女bbbb| 国产一区二区三区免费播放| 欧美日韩精品一区视频| 一级日本不卡的影视| 91丨九色丨蝌蚪丨老版| 国产欧美va欧美不卡在线| 国产精品自拍三区| 欧美zozozo| 精品影视av免费| 精品欧美乱码久久久久久| 日韩成人精品在线| 欧美人与性动xxxx| 日韩在线观看一区二区| 欧美精品欧美精品系列| 日一区二区三区|