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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? gethdidinfo.cpp

?? 通過(guò)機(jī)器硬件設(shè)備加密軟件的算法,支持反敗為勝跟蹤等.
?? CPP
字號(hào):

#include "stdafx.h"
#include <windows.h>
#include <iostream.h>
#include <stdio.h>
#include "GetHDIdInfo.h"
#define DFP_GET_VERSION 0x00074080
#define DFP_SEND_DRIVE_COMMAND 0x0007c084
#define DFP_RECEIVE_DRIVE_DATA 0x0007c088

#pragma pack(1)
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;

typedef 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;

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.

typedef 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;

typedef struct _SENDCMDOUTPARAMS {
    DWORD cBufferSize; // Size of bBuffer in bytes
    DRIVERSTATUS DriverStatus; // Driver status structure.
    BYTE bBuffer[512]; // Buffer of arbitrary length
    // in which to store the data read from the drive.
} SENDCMDOUTPARAMS, *PSENDCMDOUTPARAMS, *LPSENDCMDOUTPARAMS;

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;

/*+++
Global vars
---*/
GETVERSIONOUTPARAMS VersionParams;
SENDCMDINPARAMS in;
SENDCMDOUTPARAMS out;
HANDLE h;
DWORD i;
BYTE nDrive;

VOID ChangeByteOrder(PCHAR szString, USHORT uscStrSize)
{
    
    USHORT i;
    CHAR temp;
    
    for (i = 0; i < uscStrSize; i+=2)
    {
        temp = szString[i];
        szString[i] = szString[i+1];
        szString[i+1] = temp;
    }
}

//LR: 8 bit as 11111111=DCBAdcba  a=drive 0, b=drive 1, c=drive 2, d=drive 3
//abcd 表示是否存在IDE設(shè)備
//ABCD 表示對(duì)應(yīng)的IDE設(shè)備是否ATAPI設(shè)備(is ATAPI or IDE ATA)
void DetectIDE(BYTE bIDEDeviceMap){
    if (bIDEDeviceMap&1){
        if (bIDEDeviceMap&16){
            cout<<"ATAPI device is attached to primary controller, drive 0."<<endl;
        }else{
            cout<<"IDE device is attached to primary controller, drive 0."<<endl;
        }
    }
    if (bIDEDeviceMap&2){
        if (bIDEDeviceMap&32){
            cout<<"ATAPI device is attached to primary controller, drive 1."<<endl;
        }else{
            cout<<"IDE device is attached to primary controller, drive 1."<<endl;
        }
    }
    if (bIDEDeviceMap&4){
        if (bIDEDeviceMap&64){
            cout<<"ATAPI device is attached to secondary controller, drive 0."<<endl;
        }else{
            cout<<"IDE device is attached to secondary controller, drive 0."<<endl;
        }
    }
    if (bIDEDeviceMap&8){
        if (bIDEDeviceMap&128){
            cout<<"ATAPI device is attached to secondary controller, drive 1."<<endl;
        }else{
            cout<<"IDE device is attached to secondary controller, drive 1."<<endl;
        }
    }
}

//nIndex=0 to 3
BOOL GetHardDiskID_9X(BYTE nIndex, char* szModelNumber, char* szSerialNumber, char* szFirmwareRev)
{
    ZeroMemory(&VersionParams,sizeof(VersionParams));
    //We start in 95/98/Me
    h=CreateFile("\\\\.\\Smartvsd",0,0,0,CREATE_NEW,0,0);
    if (h==INVALID_HANDLE_VALUE){
        //cout<<"open smartvsd.vxd failed"<<endl;
        return FALSE;//exit(0);
    }
    
    if (!DeviceIoControl(h,DFP_GET_VERSION,0,0,&VersionParams,sizeof(VersionParams),&i,0)){
        cout<<"DeviceIoControl failed:DFP_GET_VERSION"<<endl;
        CloseHandle(h);
        return FALSE;
    }
    //If IDE identify command not supported, fails
    if (!(VersionParams.fCapabilities&1)){
        cout<<"Error: IDE identify command not supported.";
        CloseHandle(h);
        return FALSE;
    }
    //Display IDE drive number detected
//    DetectIDE(VersionParams.bIDEDeviceMap);
    if( !(VersionParams.bIDEDeviceMap > 0) ){
        CloseHandle(h);
		return FALSE;
	}
    // If there is a IDE device at number "i" issue commands
    // to the device

    //Identify the IDE drives
    nDrive=nIndex;
	if( !(nDrive>=0 && nDrive<4) )return FALSE;
//    for (nDrive=0;nDrive<4;nDrive++)
	{
        PIDSECTOR phdinfo;
        char s[41];
        
        ZeroMemory(&in,sizeof(in));
        ZeroMemory(&out,sizeof(out));
        if (nDrive&1){	//lr: drive 1 or 3: is master driver
            in.irDriveRegs.bDriveHeadReg=0xb0;
        }else{		//lr: drive 0 or 2: is Slave driver
            in.irDriveRegs.bDriveHeadReg=0xa0;
        }
 		// 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
		if(VersionParams.bIDEDeviceMap >> nDrive & 0x10){
        //if (VersionParams.fCapabilities&(16>>nDrive)){            
            //We don't detect a ATAPI device.
            //return FALSE;//continue;
			in.irDriveRegs.bCommandReg = IDE_ATAPI_IDENTIFY;
        }else{
            in.irDriveRegs.bCommandReg=IDE_ATA_IDENTIFY;//0xec;
        }
        in.bDriveNumber=nDrive;
        in.irDriveRegs.bSectorCountReg=1;
        in.irDriveRegs.bSectorNumberReg=1;
        in.cBufferSize=512;
        if (!DeviceIoControl(h,DFP_RECEIVE_DRIVE_DATA,&in,sizeof(in),&out,sizeof(out),&i,0)){
            cout<<"DeviceIoControl failed:DFP_RECEIVE_DRIVE_DATA"<<endl;
            CloseHandle(h);
            return FALSE;
        }

        phdinfo=(PIDSECTOR)out.bBuffer;
        memcpy(s,phdinfo->sModelNumber,40);
        s[40]=0;
        ChangeByteOrder(s,40);
        strcpy(szModelNumber,s);//cout<<endl<<"Module Number:"<<s<<endl;
        memcpy(s,phdinfo->sFirmwareRev,8);
        s[8]=0;
        ChangeByteOrder(s,8);
        strcpy(szFirmwareRev,s);//cout<<"\tFirmware rev:"<<s<<endl;
        memcpy(s,phdinfo->sSerialNumber,20);
        s[20]=0;
        ChangeByteOrder(s,20);
        strcpy(szSerialNumber,s);//cout<<"\tSerial Number:"<<s<<endl;
//        cout<<"\tCapacity:"<<phdinfo->ulTotalAddressableSectors/2/1024<<"M"<<endl<<endl;
    }
    
    //Close handle before quit
    CloseHandle(h);

    return TRUE;
}

//nIndex=0 to 3
BOOL GetHardDiskID_NT(BYTE nIndex, char* szModelNumber, char* szSerialNumber, char* szFirmwareRev)
{
    char hd[80];
    PIDSECTOR phdinfo;
    char s[41];
    
    ZeroMemory(&VersionParams,sizeof(VersionParams));
    //We start in NT/Win2000
    nDrive=nIndex;
	if( !(nDrive>=0 && nDrive<4) )
	{
		return FALSE;
	}

//	for (nDrive=0;nDrive<4;nDrive++)
	{
        sprintf(hd,"\\\\.\\PhysicalDrive%d",nDrive);
        //h=CreateFile(hd,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);
        //if (!h)

		h=CreateFile(hd,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);
		if(h == INVALID_HANDLE_VALUE )
		{
            return FALSE;//continue;
        }

        if (!DeviceIoControl(h,DFP_GET_VERSION,0,0,&VersionParams,sizeof(VersionParams),&i,0))
		{
            CloseHandle(h);

            return FALSE;//continue;
        }
        //If IDE identify command not supported, fails
        if (!(VersionParams.fCapabilities&1))
		{
            cout<<"Error: IDE identify command not supported.";
            CloseHandle(h);

            return FALSE;
        }
        //Identify the IDE drives
        ZeroMemory(&in,sizeof(in));
        ZeroMemory(&out,sizeof(out));
        if (nDrive&1){	//lr: drive 1 or 3: is master driver
            in.irDriveRegs.bDriveHeadReg=0xb0;
        }else{		//lr: drive 0 or 2: is Slave driver
            in.irDriveRegs.bDriveHeadReg=0xa0;
        }
 		// 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
		if(VersionParams.bIDEDeviceMap >> nDrive & 0x10){
        //if (VersionParams.fCapabilities&(16>>nDrive)){            
            //We don't detect a ATAPI device.
            //return FALSE;//continue;
			in.irDriveRegs.bCommandReg = IDE_ATAPI_IDENTIFY;
        }else{
            in.irDriveRegs.bCommandReg=IDE_ATA_IDENTIFY;//0xec;
        }
        in.bDriveNumber=nDrive;
        in.irDriveRegs.bSectorCountReg=1;
        in.irDriveRegs.bSectorNumberReg=1;
        in.cBufferSize=512;
        if (!DeviceIoControl(h,DFP_RECEIVE_DRIVE_DATA,&in,sizeof(in),&out,sizeof(out),&i,0))
		{
            cout<<"DeviceIoControl failed:DFP_RECEIVE_DRIVE_DATA"<<endl;
            CloseHandle(h);

            return FALSE;
        }
        phdinfo=(PIDSECTOR)out.bBuffer;
        memcpy(s,phdinfo->sModelNumber,40);
        s[40]=0;
        ChangeByteOrder(s,40);
        strcpy(szModelNumber,s);//cout<<endl<<"Module Number:"<<s<<endl;
        memcpy(s,phdinfo->sFirmwareRev,8);
        s[8]=0;
        ChangeByteOrder(s,8);
        strcpy(szFirmwareRev,s);//cout<<"\tFirmware rev:"<<s<<endl;
        memcpy(s,phdinfo->sSerialNumber,20);
        s[20]=0;
        ChangeByteOrder(s,20);
        strcpy(szSerialNumber,s);//cout<<"\tSerial Number:"<<s<<endl;
//        cout<<"\tCapacity:"<<phdinfo->ulTotalAddressableSectors/2/1024<<"M"<<endl<<endl;
        CloseHandle(h);
    }
	return TRUE;
}

DWORD GetHardDiskKey(BOOL bUse)
{
	char szModelNumber[40+1];
	char szSerialNumber[20+1];
	char szFirmwareRev[8+1];

	DWORD dwKeyHD=0;

if(bUse)
{
    OSVERSIONINFO VersionInfo;
    
    ZeroMemory(&VersionInfo,sizeof(VersionInfo));
    VersionInfo.dwOSVersionInfoSize=sizeof(VersionInfo);
    GetVersionEx(&VersionInfo);
    
    switch (VersionInfo.dwPlatformId){
    case VER_PLATFORM_WIN32s:
        //cout<<"Win32s is not supported by this programm."<<endl;
		dwKeyHD=32323232;
        break;
    case VER_PLATFORM_WIN32_WINDOWS:
        if(!GetHardDiskID_9X(0,szModelNumber,szSerialNumber,szFirmwareRev)){
			dwKeyHD=95982000;
		}
		else{
			int n=strlen(szModelNumber);
			int i;
			for(i=0;i<n;i++){
				dwKeyHD+=szModelNumber[i]<<16;
			}
			n=strlen(szSerialNumber);
			for(i=0;i<n;i++){
				dwKeyHD+=szSerialNumber[i]<<8;
			}
			n=strlen(szFirmwareRev);
			for(i=0;i<n;i++){
				dwKeyHD+=szFirmwareRev[i];
			}
		}
        break;
    case VER_PLATFORM_WIN32_NT:
        if(!GetHardDiskID_NT(0,szModelNumber,szSerialNumber,szFirmwareRev)){
			dwKeyHD=20002003;
		}
		else{
			int n=strlen(szModelNumber);
			int i;
			for(i=0;i<n;i++){
				dwKeyHD+=szModelNumber[i]<<16;
			}
			n=strlen(szSerialNumber);
			for(i=0;i<n;i++){
				dwKeyHD+=szSerialNumber[i]<<8;
			}
			n=strlen(szFirmwareRev);
			for(i=0;i<n;i++){
				dwKeyHD+=szFirmwareRev[i];
			}
		}
        break;

	default:
		break;
    }
}
else
{
	dwKeyHD = 0x05f7a94d;
}
	return dwKeyHD;
}



?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91亚洲国产成人精品一区二区三 | 国产91高潮流白浆在线麻豆| 国产精品一区二区久久精品爱涩| 色综合久久天天综合网| 成人av影院在线| 欧美揉bbbbb揉bbbbb| 国产精品美女一区二区| 人人超碰91尤物精品国产| 91在线播放网址| 日本一区二区电影| 精品一区二区三区免费毛片爱| 91免费视频网址| 久久久久久电影| 国产另类ts人妖一区二区| 欧美午夜一区二区三区免费大片| 亚洲视频一二三| 激情久久五月天| 欧美一级在线观看| 五月天精品一区二区三区| 色综合色狠狠天天综合色| 中文字幕精品综合| 国产成人免费在线观看| 精品少妇一区二区三区日产乱码 | 美女www一区二区| 欧美日韩成人综合| 亚洲国产另类精品专区| 91丨九色丨蝌蚪富婆spa| 亚洲欧洲色图综合| 94-欧美-setu| 国产精品久久久久久久久免费桃花 | 午夜精品久久久久久久99水蜜桃| av在线这里只有精品| 欧美高清一级片在线| 亚洲h在线观看| 欧美一区二区三区四区久久| 日本va欧美va精品发布| 精品国产成人系列| 国产福利一区二区三区视频| 久久精品亚洲精品国产欧美| 懂色av一区二区三区蜜臀| 国产精品国产成人国产三级 | 亚洲欧美一区二区三区久本道91| 国内精品第一页| 国产精品久久久久久一区二区三区| 成人国产精品免费网站| 亚洲乱码国产乱码精品精98午夜| 欧美在线视频全部完| 亚洲v中文字幕| 精品国产亚洲在线| 成人av一区二区三区| 亚洲精品乱码久久久久| 91精品国产高清一区二区三区蜜臀| 蜜桃精品视频在线观看| 国产婷婷精品av在线| 色综合天天做天天爱| 亚洲v精品v日韩v欧美v专区| 精品国产91洋老外米糕| 成人av在线资源| 偷拍亚洲欧洲综合| 久久这里都是精品| 91丨porny丨最新| 亚洲风情在线资源站| 日韩美女视频在线| 成人网在线免费视频| 亚洲蜜臀av乱码久久精品| 91福利小视频| 另类人妖一区二区av| 久久精品夜色噜噜亚洲a∨| 色婷婷亚洲一区二区三区| 日韩国产精品91| 久久久久久久久99精品| 色综合久久久久久久久| 日韩av一区二区在线影视| 国产欧美精品一区| 欧美性欧美巨大黑白大战| 五月激情六月综合| 欧美国产日本视频| 欧美一区二区三区四区高清| 91日韩一区二区三区| 久久成人麻豆午夜电影| 亚洲一区二区在线观看视频| 日韩精品中文字幕一区| 91成人免费网站| 成人av网站大全| 国产一区二三区好的| 午夜伊人狠狠久久| 亚洲欧美色图小说| 国产校园另类小说区| 666欧美在线视频| 91在线云播放| 波多野结衣中文字幕一区| 久久99精品国产91久久来源| 香蕉av福利精品导航| 亚洲欧美日韩在线| 亚洲国产精品t66y| 欧美成人bangbros| 91精品国产品国语在线不卡| 一本大道久久a久久综合婷婷 | 国产精品初高中害羞小美女文| 91精品国产乱码久久蜜臀| 在线观看av一区二区| 99v久久综合狠狠综合久久| 国产精品18久久久久久久久 | 亚州成人在线电影| 最新日韩av在线| 国产精品第13页| 中文字幕在线观看不卡| 国产精品美女久久久久久久网站| 国产亚洲人成网站| 日本一区二区三区四区| 国产亚洲va综合人人澡精品| 国产日韩欧美精品综合| 久久精品视频免费观看| 久久久久成人黄色影片| 国产欧美日韩精品一区| 中文字幕高清不卡| 国产精品高潮久久久久无| 亚洲欧洲三级电影| 亚洲男人都懂的| 亚洲成人精品影院| 人禽交欧美网站| 国产做a爰片久久毛片| 国产一区欧美日韩| 高清国产一区二区| 91在线视频播放地址| 色美美综合视频| 欧美日韩精品一二三区| 日韩三级视频在线观看| 日韩精品一区国产麻豆| 欧美精品一区二区三区久久久| 欧美α欧美αv大片| 中文字幕电影一区| 亚洲精品日韩一| 亚洲综合免费观看高清完整版| 最新热久久免费视频| 日韩成人一级片| 国产成人三级在线观看| 99精品热视频| 在线播放中文一区| 久久婷婷色综合| 亚洲人xxxx| 中文字幕一区二区三区色视频| 中文字幕人成不卡一区| 亚洲欧洲www| 日韩中文字幕亚洲一区二区va在线| 久久综合综合久久综合| 波多野结衣在线一区| 欧美高清视频在线高清观看mv色露露十八| 精品剧情v国产在线观看在线| 日本一区二区电影| 奇米亚洲午夜久久精品| 成人综合激情网| 欧美久久久久免费| 国产欧美一区在线| 日韩国产精品91| 91首页免费视频| 精品不卡在线视频| 亚洲国产乱码最新视频| 国产东北露脸精品视频| 欧美日韩美少妇| 久久久天堂av| 亚洲午夜免费电影| 日韩欧美你懂的| 99精品欧美一区二区三区小说| 亚洲图片欧美视频| 亚洲一区二区三区不卡国产欧美 | 福利电影一区二区三区| 国产v综合v亚洲欧| 麻豆精品新av中文字幕| 大白屁股一区二区视频| 日韩欧美久久一区| 国产亚洲精品bt天堂精选| 日韩av中文字幕一区二区三区| 国产精品一二三四| 精品日韩一区二区三区| 一区二区日韩电影| 99久久综合狠狠综合久久| 久久精品夜色噜噜亚洲aⅴ| 日精品一区二区三区| 色婷婷精品久久二区二区蜜臀av| 久久久久高清精品| 精品无码三级在线观看视频| 欧美三级日韩三级国产三级| 日韩理论片网站| 国产99久久久久| 久久免费电影网| 精品亚洲国内自在自线福利| 69堂成人精品免费视频| 亚洲国产日韩一区二区| 色婷婷久久综合| 一区二区三区四区高清精品免费观看| 丰满白嫩尤物一区二区| 国产片一区二区| 丁香婷婷综合色啪| 精品久久国产字幕高潮| 精品亚洲欧美一区| 精品久久久久一区| 国产在线精品一区二区| 国产欧美精品在线观看| 韩国精品主播一区二区在线观看|