win遍历所有硬件

来源:互联网 发布:哈尔滨学院教务网络管 编辑:程序博客网 时间:2024/06/05 04:54
//! <span style="font-family: Arial, Helvetica, sans-serif;">遍历完所有磁盘,我们还很蛋疼地想遍历所有硬件。</span>
<span style="font-family: Arial, Helvetica, sans-serif;"></span>
#include "stdafx.h"#include <stdio.h>#include <windows.h>#include <setupapi.h>#include <devguid.h>#include <regstr.h>#include <locale.h>int main( int argc, char *argv[ ], char *envp[ ] ){    setlocale(LC_ALL, "chs");    HDEVINFO hDevInfo;    SP_DEVINFO_DATA DeviceInfoData;    DWORD i;    // Create a HDEVINFO with all present devices.    hDevInfo = SetupDiGetClassDevs(NULL,        0, // Enumerator        0,        DIGCF_PRESENT | DIGCF_ALLCLASSES );    if (hDevInfo == INVALID_HANDLE_VALUE)    {        // Insert error handling here.        return 1;    }    // Enumerate through all devices in Set.    DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);    for (i=0;SetupDiEnumDeviceInfo(hDevInfo,i,        &DeviceInfoData);i++)    {        DWORD DataT;        LPTSTR buffer = NULL;        DWORD buffersize = 0;        //        // Call function with null to begin with,        // then use the returned buffer size        // to Alloc the buffer. Keep calling until        // success or an unknown failure.        //        while (!SetupDiGetDeviceRegistryProperty(            hDevInfo,            &DeviceInfoData,            SPDRP_DEVICEDESC,            &DataT,            (PBYTE)buffer,            buffersize,            &buffersize))        {            if (GetLastError() ==                ERROR_INSUFFICIENT_BUFFER)            {                // Change the buffer size.                if (buffer) LocalFree(buffer);                buffer = (LPTSTR)LocalAlloc(LPTR,buffersize);            }            else            {                // Insert error handling here.                break;            }        }        _tprintf(_T( "Result: %s\n "),buffer);        if (buffer) LocalFree(buffer);    }    if ( GetLastError()!=NO_ERROR &&        GetLastError()!=ERROR_NO_MORE_ITEMS )    {        // Insert error handling here.        return 1;    }    //  Cleanup    SetupDiDestroyDeviceInfoList(hDevInfo);    system( "pause");    return 0;}


                                             
0 0
原创粉丝点击