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

小默

(zz)提取硬盤ID

#include <windows.h>   
#include 
<stdio.h>   
#include 
<string.h>   
  
/**************************************/  
// web:itbaby.jss.cn   
// 作者:javasuki(itbaby)   
// 日期:2003/03/04   
/*
*************************************/  
  
//用于WinNT/Win2000,對(duì)Win9X無(wú)效   
//通過(guò)MS的S.M.A.R.T.接口,直接從RING3調(diào)用   
//API DeviceIoControl()來(lái)獲取硬盤信息   
  
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下運(yùn)行!!!\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號(hào)   
  
 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) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Windows

導(dǎo)航

統(tǒng)計(jì)

留言簿(13)

隨筆分類(287)

隨筆檔案(289)

漏洞

搜索

積分與排名

最新評(píng)論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久综合色天天久久综合图片| 一区二区视频免费完整版观看| 亚洲自啪免费| 亚洲七七久久综合桃花剧情介绍| 久久久久久69| 久久综合给合| 亚洲国产精品久久久久秋霞不卡| 欧美jjzz| 亚洲毛片播放| 久久久国产成人精品| 毛片基地黄久久久久久天堂| 久久综合导航| 欧美日韩精品综合在线| 国产精品日韩久久久| 国产视频在线观看一区二区| 海角社区69精品视频| 日韩视频免费在线观看| 亚洲在线日韩| 欧美激情一区二区三区蜜桃视频| aa级大片欧美| 欧美xart系列高清| 国产精品免费网站| 一区二区久久| 亚洲国产一区二区三区高清| 午夜精品久久久久久久99热浪潮| 久久女同精品一区二区| 国产精品亚洲欧美| 99国产一区| 亚洲精品久久嫩草网站秘色| 久久综合99re88久久爱| 黄色欧美日韩| 欧美激情一区二区三区在线视频观看| 亚洲激情在线激情| 久久成人免费日本黄色| 日韩午夜在线观看视频| 欧美va天堂| 一区二区激情视频| 一区二区久久久久| 国产精品视频导航| 久久久久久成人| 久久国产婷婷国产香蕉| 91久久精品一区| 日韩视频三区| 国产在线观看91精品一区| 免费国产自线拍一欧美视频| 欧美成人久久| 欧美在线观看网址综合| 久久女同互慰一区二区三区| 日韩视频不卡中文| 欧美一区二区成人| 亚洲狠狠丁香婷婷综合久久久| 麻豆成人91精品二区三区| 欧美日韩国产免费| 久久久久天天天天| 欧美天堂在线观看| 欧美国产精品中文字幕| 国产精品久久久久久久久久妞妞 | 亚洲高清久久久| 亚洲毛片视频| 激情亚洲成人| 亚洲在线一区二区三区| 亚洲毛片在线观看.| 久久精品国产一区二区三区免费看 | 久久视频一区| 亚洲欧美99| 蜜桃久久av一区| 老司机免费视频一区二区三区| 欧美久久久久| 亚洲精品在线视频| 亚洲电影免费观看高清完整版在线观看 | 国产日本亚洲高清| 亚洲美女色禁图| 99re6这里只有精品| 欧美大片18| 亚洲人成人99网站| 亚洲精品国精品久久99热| 先锋影音久久| 免费成人黄色av| 亚洲国产精品成人久久综合一区| 欧美一区二区三区久久精品| 久久国产精品免费一区| 国产亚洲综合性久久久影院| 在线亚洲激情| 另类av一区二区| 亚洲乱码国产乱码精品精天堂| 欧美精品成人在线| 亚洲男人天堂2024| 久久久噜噜噜久久久| 91久久精品国产91性色| 国产精品爱久久久久久久| 亚洲视频视频在线| 黄页网站一区| 欧美亚洲动漫精品| 久久久久女教师免费一区| 欧美国产欧美亚洲国产日韩mv天天看完整 | 久久精品视频播放| 亚洲午夜精品一区二区| 在线观看三级视频欧美| 国产精品免费一区二区三区在线观看| 亚洲视频精品在线| 亚洲国产精品专区久久| 久久精品国产v日韩v亚洲| 亚洲一二三区在线| 亚洲国产精品一区制服丝袜 | 一区二区三区国产精华| 在线观看欧美视频| 红杏aⅴ成人免费视频| 国产精品亚洲成人| 国产精品女人毛片| 国产精品日日摸夜夜添夜夜av | 久久久噜久噜久久综合| 亚洲欧美自拍偷拍| 午夜欧美精品| 欧美亚洲免费| 久久久一本精品99久久精品66| 亚洲一区二区日本| 一区二区三区毛片| 亚洲一区三区在线观看| 亚洲综合第一页| 欧美专区中文字幕| 久久综合狠狠综合久久综青草| 欧美在线观看视频一区二区| 久久国产日韩欧美| 欧美.www| 亚洲久久在线| 亚洲欧美日韩爽爽影院| 久久久天天操| 亚洲电影下载| 亚洲素人在线| 久久亚洲电影| 国产精品呻吟| 亚洲高清不卡在线| 亚洲女爱视频在线| 亚洲国产合集| 欧美影片第一页| 欧美午夜精彩| 韩国免费一区| 欧美中文在线字幕| 一区二区电影免费观看| 久久久之久亚州精品露出| 国产精品成人一区二区三区吃奶| 国产真实精品久久二三区| 中日韩美女免费视频网址在线观看| 久久国产免费看| 亚洲免费视频成人| 国产精品丝袜xxxxxxx| 亚洲一区在线观看视频| 欧美国产日韩精品免费观看| 亚洲欧洲99久久| 国产精品久久一区二区三区| 亚洲精品国产精品国自产观看浪潮 | 久久中文字幕一区| 亚洲午夜在线| 国产精品毛片在线| 午夜在线a亚洲v天堂网2018| 国产精品网站在线观看| 亚洲免费视频网站| 亚洲欧美综合网| 在线观看一区| 欧美福利电影在线观看| 欧美激情在线播放| 午夜精品久久久久久久99黑人| 日韩视频一区二区三区在线播放免费观看 | 久久免费视频一区| 99www免费人成精品| 一区二区av在线| 国产亚洲毛片| 亚洲美女黄网| 国内精品免费午夜毛片| 老司机67194精品线观看| 欧美美女操人视频| 久久精品动漫| 欧美伦理91i| 久久蜜桃资源一区二区老牛| 欧美a级片网站| 久久激情视频久久| 欧美三级电影一区| 六十路精品视频| 国产精品日韩精品| 亚洲美女av网站| 91久久国产综合久久| 午夜在线a亚洲v天堂网2018| 亚洲欧洲精品一区二区| 久久se精品一区二区| 在线视频你懂得一区| 欧美v日韩v国产v| 久久久久99| 国产日本欧美在线观看| 亚洲视频免费观看| 亚洲一区国产| 国产精品第三页| 亚洲午夜在线观看| 亚洲综合精品| 国产亚洲精品aa午夜观看| 一区二区三区四区五区精品视频| 亚洲作爱视频| 国产精品入口麻豆原神| 午夜在线a亚洲v天堂网2018| 久久精品欧美| 在线成人亚洲|