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

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

?? devicelist.cpp

?? 獲得當前連接到電腦的USB設備的詳細信息 Device Description Hardware Id Compatible Ids Service Class ClassGuid
?? CPP
字號:
// DeviceList.cpp - Implemementation of CDeviceList class
// Copyright (C) 1999 by Walter Oney
// All rights reserved

#include "stdafx.h"
#include <setupapi.h>
#include <regstr.h>
#include "DeviceList.h"

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

CDeviceList::CDeviceList(const GUID& guid)
	{							// CDeviceList::CDeviceList
	m_guid = guid;
	}							// CDeviceList::CDeviceList

CDeviceList::~CDeviceList()
	{							// CDeviceList::~CDeviceList
	}							// CDeviceList::~CDeviceList

///////////////////////////////////////////////////////////////////////////////

int CDeviceList::Initialize()
	{							// CDeviceList::Initialize

	// Open an enumeration handle so we can locate all devices of our
	// own class

	HDEVINFO info = SetupDiGetClassDevs(&m_guid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE);
	if (info == INVALID_HANDLE_VALUE)
		return 0;

	// Enumerate all devices of our class. For each one, create a
	// CDeviceEntryList object. Then determine the friendly name of the
	// device by reading the registry.

	SP_DEVICE_INTERFACE_DATA ifdata;
	ifdata.cbSize = sizeof(ifdata);
	DWORD devindex;
	for (devindex = 0; SetupDiEnumDeviceInterfaces(info, NULL, &m_guid, devindex, &ifdata); ++devindex)
		{						// for each device

		// Determine the symbolic link name for this device instance. Since
		// this is variable in length, make an initial call to determine
		// the required length.

		DWORD needed;
		SetupDiGetDeviceInterfaceDetail(info, &ifdata, NULL, 0, &needed, NULL);

		PSP_INTERFACE_DEVICE_DETAIL_DATA detail = (PSP_INTERFACE_DEVICE_DETAIL_DATA) malloc(needed);
		SP_DEVINFO_DATA did = {sizeof(SP_DEVINFO_DATA)};
		detail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA);
		if (!SetupDiGetDeviceInterfaceDetail(info, &ifdata, detail, needed, NULL, &did))
			{						// can't get detail info
			free((PVOID) detail);
			continue;
			}						// can't get detail info

		// Determine the device's friendly name

		TCHAR fname[256];
		memset(fname, 0, sizeof(fname));
		if (!SetupDiGetDeviceRegistryProperty(info, &did, SPDRP_FRIENDLYNAME, NULL, (PBYTE) fname, sizeof(fname), NULL)
			&& !SetupDiGetDeviceRegistryProperty(info, &did, SPDRP_DEVICEDESC, NULL, (PBYTE) fname, sizeof(fname), NULL))
			_tcsncpy(fname, detail->DevicePath, 256);
    
		CDeviceListEntry e(detail->DevicePath, fname);
		free((PVOID) detail);

		m_list.Add(e);
		}						// for each device

	SetupDiDestroyDeviceInfoList(info);

	// Return the number of entries in the list

	return m_list.GetSize();
	}							// CDeviceList::Initialize

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

CDeviceListEntry::CDeviceListEntry(LPCTSTR linkname, LPCTSTR friendlyname)
	{							// CDeviceListEntry::CDeviceListEntry
	m_linkname = linkname;
	m_friendlyname = friendlyname;
	}							// CDeviceListEntry::CDeviceListEntry

///////////////////////////////////////////////////////////////////////////////

CString CDeviceListEntry::GetProperty(enum DEVPROP prop)
	{							// CDeviceListEntry::GetProperty

	TCHAR propval[256] = "";

	// Create a device info object describing this device.

	HDEVINFO info = SetupDiCreateDeviceInfoList(NULL, NULL);
	if (info != INVALID_HANDLE_VALUE)
		{						// opened info list okay

		SP_DEVICE_INTERFACE_DATA ifdata = {sizeof(SP_DEVICE_INTERFACE_DATA)};
		SP_DEVINFO_DATA devdata = {sizeof(SP_DEVINFO_DATA)};

		// Open the device interface using the device's symbolic link name, then request
		// detailed information about the interface. What we want here is an SP_DEVINFO_DATA
		// structure that we can use to get properties from the registry. Note the obscure
		// fact that the get-detail call will fail with ERROR_INSUFFICIENT_BUFFER because
		// we're not supplying a detail structure even though it returns the SP_DEVINFO_DATA (!)

		if (SetupDiOpenDeviceInterface(info, m_linkname, 0, &ifdata)
			&& (SetupDiGetDeviceInterfaceDetail(info, &ifdata, NULL, 0, NULL, &devdata)
			|| GetLastError() == ERROR_INSUFFICIENT_BUFFER))
			{					// got device info
			static DWORD propcode[] = {
				SPDRP_DEVICEDESC,
				SPDRP_HARDWAREID,
				SPDRP_COMPATIBLEIDS,
				SPDRP_SERVICE,
				SPDRP_CLASS,
				SPDRP_CLASSGUID,
				SPDRP_DRIVER,
				SPDRP_MFG,
				SPDRP_FRIENDLYNAME,
//				SPDRP_ENUMERATOR_NAME,
				};

			// Fetch the desired property from the registry

			SetupDiGetDeviceRegistryProperty(info, &devdata, propcode[prop], NULL, (PBYTE) propval,
				sizeof(propval), NULL);
			}					// got device info

		SetupDiDestroyDeviceInfoList(info);
		}						// opened info list okay

	return propval;
	}							// CDeviceListEntry::GetProperty


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美在线观看一区| 免费成人在线观看| 首页国产欧美日韩丝袜| 国模一区二区三区白浆| 色婷婷综合五月| 久久精品一区二区| 裸体健美xxxx欧美裸体表演| 色综合欧美在线| 久久久久综合网| 日韩电影免费在线看| 91丨九色丨蝌蚪丨老版| 精品国产乱码久久久久久浪潮| 亚洲精品国产成人久久av盗摄| 国产传媒欧美日韩成人| 日韩午夜在线播放| 亚洲一区二区三区精品在线| hitomi一区二区三区精品| 久久亚洲精精品中文字幕早川悠里| 亚洲大片一区二区三区| 91福利社在线观看| 18涩涩午夜精品.www| 国产成人在线网站| 久久综合久久鬼色| 精品亚洲欧美一区| 日韩欧美精品在线视频| 日本欧美肥老太交大片| 在线播放亚洲一区| 亚洲一级在线观看| 欧美日韩一本到| 亚洲成av人片一区二区三区| 欧美性大战xxxxx久久久| 一区二区三区小说| 欧美在线小视频| 性久久久久久久久久久久| 欧美三级电影网站| 日韩电影免费在线观看网站| 欧美精品日日鲁夜夜添| 日韩在线观看一区二区| 日韩欧美一区中文| 精品无码三级在线观看视频| 久久久久久久免费视频了| 国产一区二区不卡| 国产精品视频线看| 91论坛在线播放| 亚洲一区二区四区蜜桃| 欧美日韩国产另类一区| 蜜臀av性久久久久av蜜臀妖精| 日韩亚洲电影在线| 国产精品白丝av| 17c精品麻豆一区二区免费| 91亚洲男人天堂| 日韩黄色免费电影| 久久久欧美精品sm网站| 99re视频这里只有精品| 亚洲国产aⅴ天堂久久| 日韩欧美在线观看一区二区三区| 国产成人免费视频网站| 亚洲欧美在线aaa| 538prom精品视频线放| 国产福利91精品| 一区二区三区在线观看国产| 日韩精品一区二区三区老鸭窝| 国产二区国产一区在线观看| 亚洲二区在线观看| 久久婷婷色综合| 91成人免费在线| 激情五月激情综合网| 亚洲少妇中出一区| 欧美成人video| 99v久久综合狠狠综合久久| 青青草97国产精品免费观看| 中文字幕在线不卡国产视频| 欧美一区二区播放| 99久久er热在这里只有精品66| 日本不卡视频一二三区| 国产精品女主播av| 91精品国产91久久综合桃花 | 国产不卡视频一区| 一区二区三区在线观看视频| 久久亚洲影视婷婷| 欧美日韩三级一区| 波多野结衣中文字幕一区二区三区| 午夜一区二区三区视频| 中文字幕国产精品一区二区| 日韩欧美色综合| 欧美日韩五月天| 91在线看国产| 国产精品一区二区久久精品爱涩| 午夜免费久久看| 亚洲精品国产一区二区精华液| 久久美女艺术照精彩视频福利播放| 欧美最猛性xxxxx直播| a级精品国产片在线观看| 另类专区欧美蜜桃臀第一页| 日韩av电影免费观看高清完整版在线观看| 国产精品久久久久久久久久免费看| 欧美一个色资源| 7777精品伊人久久久大香线蕉| 色综合激情久久| 91香蕉国产在线观看软件| 国产91精品露脸国语对白| 另类中文字幕网| 蜜臀a∨国产成人精品| 日韩综合小视频| 婷婷开心久久网| 天天做天天摸天天爽国产一区| 亚洲一卡二卡三卡四卡无卡久久| 一区二区在线观看免费视频播放| 中文欧美字幕免费| 亚洲国产激情av| 国产精品久久久久久久午夜片| 国产日产欧美一区| 国产精品国模大尺度视频| 日本一区二区电影| 欧美国产成人精品| 最新国产成人在线观看| 亚洲精品老司机| 亚洲一区中文在线| 五月开心婷婷久久| 日韩成人精品在线| 麻豆精品蜜桃视频网站| 麻豆国产一区二区| 国产一区二区三区观看| 国产盗摄女厕一区二区三区| 成人免费精品视频| 91在线无精精品入口| 91成人免费网站| 欧美一级一区二区| 久久综合久久久久88| 国产精品久99| 亚洲精品中文在线观看| 日韩电影在线一区二区三区| 国内精品久久久久影院色| 成人的网站免费观看| 91国偷自产一区二区三区成为亚洲经典 | 国产一区欧美二区| 成人一区二区三区| 日本精品免费观看高清观看| 欧美猛男超大videosgay| 日韩欧美国产综合| 国产精品久久一级| 污片在线观看一区二区| 国内精品免费在线观看| 91在线观看一区二区| 欧美日本在线视频| 国产欧美一区二区在线观看| 亚洲国产成人av| 国产精品中文有码| 91国产免费看| 精品噜噜噜噜久久久久久久久试看 | 久久国产精品99精品国产| 丰满少妇在线播放bd日韩电影| 日本精品免费观看高清观看| 日韩欧美色电影| 伊人开心综合网| 国产成人日日夜夜| 91精品国产综合久久久久久漫画 | 成人av资源在线观看| 欧美三级视频在线| 欧美国产一区在线| 青青草原综合久久大伊人精品 | 精品国免费一区二区三区| 亚洲美女在线一区| 精品影视av免费| 欧美日韩一区不卡| 成人欧美一区二区三区| 精品综合久久久久久8888| 色婷婷综合视频在线观看| 国产亚洲欧美一级| 麻豆成人综合网| 欧美日韩国产精品自在自线| 国产精品成人免费| 国产自产v一区二区三区c| 欧美日韩一区二区三区高清| 国产精品福利在线播放| 激情六月婷婷久久| 欧美另类久久久品| 亚洲色图丝袜美腿| 成人精品免费视频| 精品精品欲导航| 三级久久三级久久久| 欧美在线短视频| 亚洲欧美日韩电影| 成人国产亚洲欧美成人综合网 | 国产成人av资源| www国产精品av| 麻豆国产精品视频| 日韩欧美亚洲国产另类| 日av在线不卡| 欧美一区二区免费视频| 日韩和的一区二区| 欧美精品自拍偷拍| 亚洲va韩国va欧美va精品| 在线观看视频欧美| 亚洲在线视频免费观看| 91老师国产黑色丝袜在线| 亚洲手机成人高清视频| 色综合中文字幕国产 | 一区二区三区影院| 色老综合老女人久久久|