青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

小默

(zz)提取硬盤ID

#include <windows.h>   
#include 
<stdio.h>   
#include 
<string.h>   
  
/**************************************/  
// web:itbaby.jss.cn   
// 作者:javasuki(itbaby)   
// 日期:2003/03/04   
/*
*************************************/  
  
//用于WinNT/Win2000,對Win9X無效   
//通過MS的S.M.A.R.T.接口,直接從RING3調(diào)用   
//API DeviceIoControl()來獲取硬盤信息   
  
typedef 
struct _SRB_IO_CONTROL {   
    ULONG HeaderLength;   
    
char Signature[8];    
    ULONG Timeout;    
    ULONG ControlCode;    
    ULONG ReturnCode;   
    ULONG Length;    
} SRB_IO_CONTROL;   
  
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 _IDEREGS {   
    BYTE bFeaturesReg;   
    BYTE bSectorCountReg;   
    BYTE bSectorNumberReg;   
    BYTE bCylLowReg;   
    BYTE bCylHighReg;   
    BYTE bDriveHeadReg;   
    BYTE bCommandReg;   
    BYTE bReserved;   
} IDEREGS;   
  
typedef 
struct _SENDCMDINPARAMS {   
    DWORD cBufferSize;    
    IDEREGS irDriveRegs;    
    BYTE bDriveNumber;    
    BYTE bReserved[
3];   
    DWORD dwReserved[
4];   
    BYTE bBuffer[
1];   
} SENDCMDINPARAMS;   
  
typedef 
struct _SENDCMDOUTPARAMS {   
    DWORD cBufferSize;   
    DRIVERSTATUS DriverStatus;   
    BYTE bBuffer[
1];   
} SENDCMDOUTPARAMS;   
  
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;   
  
#define IDE_ATAPI_IDENTIFY 0xA1   
#define IDE_ATA_IDENTIFY 0xEC   
#define IDENTIFY_BUFFER_SIZE 512   
#define DFP_RECEIVE_DRIVE_DATA 0x0007c088   
#define IOCTL_SCSI_MINIPORT 0x0004d008   
#define IOCTL_SCSI_MINIPORT_IDENTIFY 0x001b0501   
#define DATA_SIZE (sizeof(SENDCMDINPARAMS)-1+IDENTIFY_BUFFER_SIZE)   
#define BUFFER_SIZE (sizeof(SRB_IO_CONTROL)+DATA_SIZE)   
#define W9X_BUFFER_SIZE (IDENTIFY_BUFFER_SIZE+16)   
#define SENDIDLENGTH (sizeof(SENDCMDOUTPARAMS)+IDENTIFY_BUFFER_SIZE)   
  
#define PRINTING_TO_CONSOLE_ALLOWED   
  
static char HardDriveSerialNumber [1024];   
//-----------------------------------------------------------------   
char *ConvertToString (DWORD diskdata [256], int firstIndex, int lastIndex)   
{   
    
static char string [1024];   
    
int index = 0;   
    
int position = 0;   
  
    
for (index = firstIndex; index <= lastIndex; index++){   
        
string [position] = (char) (diskdata [index] / 256);   
        position
++;   
        
string [position] = (char) (diskdata [index] % 256);   
        position
++;   
    }   
  
    
string [position] = '\0';   
  
    
for (index = position - 1; index > 0 && ' ' == string [index]; index--)   
        
string [index] = '\0';   
  
    
return string;   
}   
  
//-----------------------------------------------------------------   
  
void PrintIdeInfo (int drive, DWORD diskdata [256])   
{   
    strcpy (HardDriveSerialNumber, ConvertToString (diskdata, 
1019));   
  
#ifdef PRINTING_TO_CONSOLE_ALLOWED   
  
    
switch (drive / 2) {   
    
case 0//printf ("\nPrimary Controller - ");   
        break;   
    
case 1//printf ("\nSecondary Controller - ");   
        break;   
    
case 2//printf ("\nTertiary Controller - ");   
        break;   
    
case 3//printf ("\nQuaternary Controller - ");   
        break;   
    }   
  
    
switch (drive % 2)    {   
    
case 0//printf ("Master drive\n\n");   
        break;   
    
case 1//printf ("Slave drive\n\n");   
        break;   
    }   
  
    
//輸出硬盤信息   
    printf ("Drive Model Number: %s\n", ConvertToString (diskdata, 2746));   
    printf (
"Drive Serial Number: %s\n", ConvertToString (diskdata, 1019));   
    printf (
"Drive Controller Revision Number__: %s\n", ConvertToString (diskdata, 2326));   
    printf (
"Controller Buffer Size on Drive___: %u bytes\n", diskdata [21* 512);   
    printf (
"Drive Type________________________: ");   
    
if (diskdata [0& 0x0080)   
        printf (
"Removable\n");   
    
else if (diskdata [0& 0x0040)   
        printf (
"Fixed\n");   
    
else printf ("Unknown\n");   
  
    printf (
"Physical Geometry: "  
        
"%u Cylinders %u Heads %u Sectors per track\n",   
        diskdata [
1], diskdata [3], diskdata [6]);   
  
#else // PRINTING_TO_CONSOLE_ALLOWED   
  
#endif // PRINTING_TO_CONSOLE_ALLOWED   
}   
//-----------------------------------------------------------------   
  
int ReadIdeDriveAsScsiDriveInNT (void)   
{   
    
int done = FALSE;   
    
int controller = 0;   
    
for (controller = 0; controller < 2; controller++)    {   
        HANDLE hScsiDriveIOCTL 
= 0;   
        
char driveName [256];   
        sprintf (driveName, 
"\\\\.\\Scsi%d:", controller);   
        hScsiDriveIOCTL 
= CreateFile (driveName,   
            GENERIC_READ 
| GENERIC_WRITE,    
            FILE_SHARE_READ 
| FILE_SHARE_WRITE, NULL,   
            OPEN_EXISTING, 
0, NULL);   
  
        
// if (hScsiDriveIOCTL == INVALID_HANDLE_VALUE)   
        
// printf ("Unable to open SCSI controller %d, error code: 0x%lX\n",   
        
// controller, GetLastError ());   
  
        
if (hScsiDriveIOCTL != INVALID_HANDLE_VALUE){   
            
int drive = 0;   
  
            
for (drive = 0; drive < 2; drive++)    {   
                
char buffer [sizeof (SRB_IO_CONTROL) + SENDIDLENGTH];   
                SRB_IO_CONTROL 
*= (SRB_IO_CONTROL *)buffer;   
                SENDCMDINPARAMS 
*pin =(SENDCMDINPARAMS *)(buffer + sizeof (SRB_IO_CONTROL));   
                DWORD dummy;   
  
                memset (buffer, 
0sizeof (buffer));   
                p 
-> HeaderLength = sizeof (SRB_IO_CONTROL);   
                p 
-> Timeout = 10000;   
                p 
-> Length = SENDIDLENGTH;   
                p 
-> ControlCode = IOCTL_SCSI_MINIPORT_IDENTIFY;   
                strncpy ((
char *) p -> Signature, "SCSIDISK"8);   
  
                pin 
-> irDriveRegs.bCommandReg = IDE_ATA_IDENTIFY;   
                pin 
-> bDriveNumber = drive;   
  
                
if (DeviceIoControl (hScsiDriveIOCTL, IOCTL_SCSI_MINIPORT,    
                    buffer,   
                    
sizeof (SRB_IO_CONTROL) +   
                    
sizeof (SENDCMDINPARAMS) - 1,   
                    buffer,   
                    
sizeof (SRB_IO_CONTROL) + SENDIDLENGTH,   
                    
&dummy, NULL))    {   
                        SENDCMDOUTPARAMS 
*pOut =(SENDCMDOUTPARAMS *)(buffer + sizeof (SRB_IO_CONTROL));   
                        IDSECTOR 
*pId = (IDSECTOR *)(pOut -> bBuffer);   
                        
if (pId -> sModelNumber [0])    {   
                            DWORD diskdata [
256];   
                            
int ijk = 0;   
                            USHORT 
*pIdSector = (USHORT *) pId;   
  
                            
for (ijk = 0; ijk < 256; ijk++)   
                                diskdata [ijk] 
= pIdSector [ijk];   
  
                            PrintIdeInfo (controller 
* 2 + drive, diskdata);   
  
                            done 
= TRUE;   
                        }   
                }   
            }   
            CloseHandle (hScsiDriveIOCTL);   
        }   
    }   
  
    
return done;   
}   
//-----------------------------------------------------------------   
long getHardDriveComputerID ()   
{   
    
int done = FALSE;   
    __int64 id 
= 0;   
  
    strcpy (HardDriveSerialNumber, 
"");   
    
if ( ! done) done = ReadIdeDriveAsScsiDriveInNT ();   
    
if (done)    {   
        
char *= HardDriveSerialNumber;   
        
if ( ! strncmp (HardDriveSerialNumber, "WD-W"4)) p += 5;   
        
for ( ; p && *p; p++)    {   
            
if ('-' == *p) continue;   
            id 
*= 10;   
            
switch (*p)    {   
            
case '0': id += 0break;   
            
case '1': id += 1break;   
            
case '2': id += 2break;   
            
case '3': id += 3break;   
            
case '4': id += 4break;   
            
case '5': id += 5break;   
            
case '6': id += 6break;   
            
case '7': id += 7break;   
            
case '8': id += 8break;   
            
case '9': id += 9break;   
            
case 'a'case 'A': id += 10break;   
            
case 'b'case 'B': id += 11break;   
            
case 'c'case 'C': id += 12break;   
            
case 'd'case 'D': id += 13break;   
            
case 'e'case 'E': id += 14break;   
            
case 'f'case 'F': id += 15break;   
            
case 'g'case 'G': id += 16break;   
            
case 'h'case 'H': id += 17break;   
            
case 'i'case 'I': id += 18break;   
            
case 'j'case 'J': id += 19break;   
            
case 'k'case 'K': id += 20break;   
            
case 'l'case 'L': id += 21break;   
            
case 'm'case 'M': id += 22break;   
            
case 'n'case 'N': id += 23break;   
            
case 'o'case 'O': id += 24break;   
            
case 'p'case 'P': id += 25break;   
            
case 'q'case 'Q': id += 26break;   
            
case 'r'case 'R': id += 27break;   
            
case 's'case 'S': id += 28break;   
            
case 't'case 'T': id += 29break;   
            
case 'u'case 'U': id += 30break;   
            
case 'v'case 'V': id += 31break;   
            
case 'w'case 'W': id += 32break;   
            
case 'x'case 'X': id += 33break;   
            
case 'y'case 'Y': id += 34break;   
            
case 'z'case 'Z': id += 35break;   
            }    
        }   
    }   
    
if (id > 268435455) id %= 268435456;   
  
#ifdef PRINTING_TO_CONSOLE_ALLOWED   
    
//printf ("\nComputer ID_______________________: %d\n", id);   
#endif   
    
return (long) id;   
}   
//-----------------------------------------------------------------   
  
  
int main (int argc, char * argv [])   
{   
    OSVERSIONINFO ver;   
    ver.dwOSVersionInfoSize
=sizeof(OSVERSIONINFO);   
    GetVersionEx(
&ver);   
    
if(VER_PLATFORM_WIN32_NT==ver.dwPlatformId)   
        getHardDriveComputerID ();   
    
else  
        printf(
"不能在Win9X下運行!!!\n");   
    
return 0;   
}  
2:
/*+++  
HDID.CPP  
Written by Lu Lin  
http://lu0.126.com  
2000.11.3  
---
*/  
#include 
<windows.h>   
#include 
<iostream>   
#include 
<cstdio>   
using namespace std;   
  
#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;   
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 vers;   
SENDCMDINPARAMS 
in;   
SENDCMDOUTPARAMS 
out;   
HANDLE h;   
DWORD i;   
BYTE j;   
void CopyRight(){   
    cerr
<<endl<<"HDD identifier v1.0 for WIN95/98/Me/NT/2000. written by Lu Lin"<<endl;   
    cerr
<<"For more information, please visit Inside Programming: http://lu0.126.com"<<endl;   
    cerr
<<"2000.11.3"<<endl<<endl;   
}   
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;   
    }   
}   
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;   
        }   
    }   
}   
void hdid9x(){   
    ZeroMemory(
&vers,sizeof(vers));   
    
//We start in 95/98/Me   
  
    h
=CreateFile("\\\\.\\Smartvsd",0,0,0,CREATE_NEW,0,0);   
    
if (!h){   
        cout
<<"open smartvsd.vxd failed"<<endl;   
        exit(
0);   
    }   
    
if (!DeviceIoControl(h,DFP_GET_VERSION,0,0,&vers,sizeof(vers),&i,0)){   
        cout
<<"DeviceIoControl failed:DFP_GET_VERSION"<<endl;   
        CloseHandle(h);   
        
return;   
    }   
    
//If IDE identify command not supported, fails   
  
    
if (!(vers.fCapabilities&1)){   
        cout
<<"Error: IDE identify command not supported.";   
        CloseHandle(h);   
        
return;   
    }   
    
//Display IDE drive number detected   
  
    DetectIDE(vers.bIDEDeviceMap);   
    
//Identify the IDE drives   
  
    
for (j=0;j<4;j++){   
        PIDSECTOR phdinfo;   
        
char s[41];   
        ZeroMemory(
&in,sizeof(in));   
        ZeroMemory(
&out,sizeof(out));   
        
if (j&1){   
            
in.irDriveRegs.bDriveHeadReg=0xb0;   
        }
else{   
            
in.irDriveRegs.bDriveHeadReg=0xa0;   
        }   
        
if (vers.fCapabilities&(16>>j)){   
            
//We don't detect a ATAPI device.   
  
            cout
<<"Drive "<<(int)(j+1)<<" is a ATAPI device, we don't detect it"<<endl;   
            
continue;   
        }
else{   
            
in.irDriveRegs.bCommandReg=0xec;   
        }   
        
in.bDriveNumber=j;   
        
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;   
        }   
        phdinfo
=(PIDSECTOR)out.bBuffer;   
        memcpy(s,phdinfo
->sModelNumber,40);   
        s[
40]=0;   
        ChangeByteOrder(s,
40);   
        cout
<<endl<<"Module Number:"<<s<<endl;   
        memcpy(s,phdinfo
->sFirmwareRev,8);   
        s[
8]=0;   
        ChangeByteOrder(s,
8);   
        cout
<<"\tFirmware rev:"<<s<<endl;   
        memcpy(s,phdinfo
->sSerialNumber,20);   
        s[
20]=0;   
        ChangeByteOrder(s,
20);   
        cout
<<"\tSerial Number:"<<s<<endl;   
        cout
<<"\tCapacity:"<<phdinfo->ulTotalAddressableSectors/2/1024<<"M"<<endl<<endl;   
    }   
    
//Close handle before quit   
  
    CloseHandle(h);   
    CopyRight();   
}   
void hdidnt(){   
    
char hd[80];   
    PIDSECTOR phdinfo;   
    
char s[41];   
    ZeroMemory(
&vers,sizeof(vers));   
    
//We start in NT/Win2000   
  
    
for (j=0;j<4;j++){   
        sprintf(hd,
"\\\\.\\PhysicalDrive%d",j);   
        h
=CreateFile(hd,GENERIC_READ|GENERIC_WRITE,   
            FILE_SHARE_READ
|FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);   
        
if (!h){   
            
continue;   
        }   
        
if (!DeviceIoControl(h,DFP_GET_VERSION,0,0,&vers,sizeof(vers),&i,0)){   
            CloseHandle(h);   
            
continue;   
        }   
        
//If IDE identify command not supported, fails   
  
        
if (!(vers.fCapabilities&1)){   
            cout
<<"Error: IDE identify command not supported.";   
            CloseHandle(h);   
            
return;   
        }   
        
//Identify the IDE drives   
  
        ZeroMemory(
&in,sizeof(in));   
        ZeroMemory(
&out,sizeof(out));   
        
if (j&1){   
            
in.irDriveRegs.bDriveHeadReg=0xb0;   
        }
else{   
            
in.irDriveRegs.bDriveHeadReg=0xa0;   
        }   
        
if (vers.fCapabilities&(16>>j)){   
            
//We don't detect a ATAPI device.   
  
            cout
<<"Drive "<<(int)(j+1)<<" is a ATAPI device, we don't detect it"<<endl;   
            
continue;   
        }
else{   
            
in.irDriveRegs.bCommandReg=0xec;   
        }   
        
in.bDriveNumber=j;   
        
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;   
        }   
        phdinfo
=(PIDSECTOR)out.bBuffer;   
        memcpy(s,phdinfo
->sModelNumber,40);   
        s[
40]=0;   
        ChangeByteOrder(s,
40);   
        cout
<<endl<<"Module Number:"<<s<<endl;   
        memcpy(s,phdinfo
->sFirmwareRev,8);   
        s[
8]=0;   
        ChangeByteOrder(s,
8);   
        cout
<<"\tFirmware rev:"<<s<<endl;   
        memcpy(s,phdinfo
->sSerialNumber,20);   
        s[
20]=0;   
        ChangeByteOrder(s,
20);   
        cout
<<"\tSerial Number:"<<s<<endl;   
        cout
<<"\tCapacity:"<<phdinfo->ulTotalAddressableSectors/2/1024<<"M"<<endl<<endl;   
        CloseHandle(h);   
    }   
    CopyRight();   
}   
void main(){   
    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;   
    
return;   
case VER_PLATFORM_WIN32_WINDOWS:   
    hdid9x();   
    
return;   
case VER_PLATFORM_WIN32_NT:   
    hdidnt();   
    
return;   
    }   
}   
3:

#include <windows.h>   
#include 
<iostream>   
using namespace std;   
typedef BOOL (WINAPI
*DISKID32)(char[],char[]);   
int main()   
{   
 
char factory[20];//硬盤廠商   
  
 
char diskID[50];//硬盤id號   
  
 HINSTANCE ghDiskID
=NULL;   
 DISKID32 diskIDFunc;   
 ghDiskID 
= LoadLibrary("DiskID32.dll");   
 
if(ghDiskID == NULL)   
 {   
  cout
<<"Load library error!";   
  
return 1;   
 }   
 
else  
 {   
  diskIDFunc 
= (DISKID32)GetProcAddress(ghDiskID,"DiskID32");   
  diskIDFunc(factory,diskID);   
  printf(
"%s:%s\n",factory,diskID);   
  FreeLibrary(ghDiskID);   
 }   
 
return 1;    
}   

posted on 2010-02-05 23:45 小默 閱讀(1708) 評論(0)  編輯 收藏 引用 所屬分類: Windows

導(dǎo)航

統(tǒng)計

留言簿(13)

隨筆分類(287)

隨筆檔案(289)

漏洞

搜索

積分與排名

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲免费在线视频| 亚洲大片av| 欧美精品国产一区二区| 欧美激情亚洲另类| 国产精品qvod| 免费观看不卡av| 欧美黄色成人网| 精品99一区二区| 久久爱www久久做| 亚洲男女毛片无遮挡| 一区二区av在线| 欧美日韩不卡| 国产精品欧美久久| 国产欧美日韩中文字幕在线| 欧美人与性禽动交情品| 欧美日韩在线大尺度| 欧美日韩亚洲一区二区| 国产精品亚洲综合天堂夜夜| 国产精品99久久久久久有的能看| 欧美高清视频www夜色资源网| 久久久亚洲欧洲日产国码αv| 久久精品免费看| 欧美xxx成人| 国产精品亚发布| 亚洲理伦电影| 亚洲欧美日韩视频一区| 欧美在线国产| 亚洲影音先锋| 国产精品久久久久久av下载红粉| 亚洲精品视频在线观看免费| 欧美激情国产精品| 欧美sm视频| 亚洲午夜精品| 亚洲私人影院| 国产视频丨精品|在线观看| 亚洲视频成人| 在线综合亚洲欧美在线视频| 欧美高清在线一区| 亚洲免费av网站| 亚洲乱码一区二区| 国产精品毛片在线| 欧美在线视频a| 久久经典综合| 亚洲人成毛片在线播放| 欧美午夜免费电影| 亚洲精品欧美日韩专区| 激情小说另类小说亚洲欧美| 在线一区二区视频| 99国产一区| 欧美承认网站| 亚洲国产精品悠悠久久琪琪| 欧美a级理论片| 欧美怡红院视频一区二区三区| 免费日韩成人| 欧美国产日韩一二三区| 性伦欧美刺激片在线观看| 久久久另类综合| 亚洲专区一区二区三区| 国产精品一区二区女厕厕| 国产精品久久久91| 亚洲成人在线视频播放 | 在线播放国产一区中文字幕剧情欧美 | 欧美精品xxxxbbbb| 久久xxxx精品视频| 欧美日韩综合不卡| 亚洲日本中文字幕| 亚洲精品国产系列| 久久免费高清| 一区二区三区成人精品| 欧美国产精品v| 欧美高清视频在线| 亚洲日本视频| 欧美日韩国产麻豆| 亚洲精品乱码久久久久| 亚洲精品一区二区三区av| 久久野战av| 亚洲人成网在线播放| 日韩午夜在线观看视频| 欧美三区免费完整视频在线观看| 亚洲美女在线一区| 欧美一区高清| 亚洲欧洲视频在线| 欧美婷婷久久| 久久久人成影片一区二区三区 | 亚洲一区二区三区久久| 亚洲专区免费| 韩国v欧美v日本v亚洲v| 美女图片一区二区| 一本色道久久综合亚洲91| 久久久久www| 亚洲精品偷拍| 国产视频综合在线| 欧美精品三级日韩久久| 久久国产精品久久久久久电车| 久久综合激情| 欧美片第1页综合| 国产精品美女久久福利网站| 亚洲美女中文字幕| 欧美在线一级va免费观看| 亚洲黄色成人久久久| 亚洲伊人观看| 亚洲理论在线观看| 欧美大尺度在线观看| 欧美呦呦网站| 性欧美大战久久久久久久久| 中文久久精品| 亚洲毛片在线免费观看| 在线国产精品一区| 国产一区视频观看| 国产日韩精品在线播放| 欧美视频导航| 国产精品豆花视频| 国产精品久久久久久久久免费樱桃 | 99在线精品视频| 亚洲视频免费| 亚洲精品国产精品国自产观看浪潮| 国外成人在线视频| 亚洲国产精品视频| 亚洲久色影视| 亚洲永久视频| 久久网站免费| 亚洲激情在线观看视频免费| 亚洲国产1区| 亚洲精品久久久一区二区三区| 亚洲国产日韩美| 午夜亚洲精品| 欧美日韩1区2区| 国产欧美一区二区精品婷婷| 国模一区二区三区| 91久久国产自产拍夜夜嗨| 91久久精品国产91久久性色| 一本久久知道综合久久| 久久精品道一区二区三区| 亚洲激情不卡| 久久av一区二区三区亚洲| 欧美精品激情在线| 在线观看国产精品网站| 先锋影音国产精品| 亚洲免费观看高清在线观看| 久久午夜av| 欧美本精品男人aⅴ天堂| 狠狠色噜噜狠狠狠狠色吗综合| 亚洲综合国产激情另类一区| 亚洲电影毛片| 欧美91视频| 久久影院午夜论| 亚洲图片欧洲图片日韩av| 欧美精品二区三区四区免费看视频| 在线看片欧美| 在线看片日韩| 亚洲高清色综合| 日韩一区二区精品视频| 亚洲欧美日韩中文播放| 久久一区视频| 久久久欧美一区二区| 欧美精品情趣视频| 欧美另类人妖| 欧美成在线视频| 欧美岛国激情| 篠田优中文在线播放第一区| 久久久蜜桃精品| 欧美亚洲三区| 欧美视频网站| 亚洲第一福利视频| 国产精品视频一| 亚洲经典一区| 亚洲精品日韩激情在线电影 | 午夜免费在线观看精品视频| 亚洲日韩视频| 久久不射网站| 欧美一区二区三区在线视频| 欧美精品1区| 欧美黑人在线观看| 狠狠干综合网| 欧美诱惑福利视频| 久久久青草婷婷精品综合日韩 | 欧美一级视频免费在线观看| 亚洲区第一页| 欧美美女喷水视频| 91久久精品国产91久久性色tv | 欧美伊人久久久久久午夜久久久久 | 亚洲福利视频网站| 国产综合色产在线精品| 久久精品国产久精国产一老狼 | 国产精品高潮视频| 亚洲日本中文字幕区| 亚洲精品日产精品乱码不卡| 欧美国产综合| 国产伦理一区| 亚洲天堂av在线免费观看| 欧美一级艳片视频免费观看| 国产亚洲综合性久久久影院| 久久亚洲综合| 欧美在线精品免播放器视频| 久久久www成人免费精品| 久久婷婷综合激情| 亚洲一区二区在线免费观看视频| 美女脱光内衣内裤视频久久影院 | 国产精品久久久久秋霞鲁丝| 久久久午夜精品|