Linux C獲取PCI裝置名和廠商名

2021-07-09 20:05:05 字數 1566 閱讀 2776

一、介面

char *pci_lookup_name(struct pci_access *a, char *buf, intsize, int flags, ...) pci_abi;

(/usr/include/pci/pci.h)                   

二、描述

在/sys/bus/pci/devices/目錄下面可以讀取pci裝置的vendorid(從vendor檔案獲取), deviceid(從device檔案獲取),但是關於vendor的文字描述和device的文字描述卻沒有。

1)  剛開始的時候使用lspci來獲取vendor和device的文字描述,但是效率比較低;

2)  現在使用pci_lookup_name()介面來獲取vendor和device的文字描述;

pacc->id_lookup_mode = 0;

預設安裝的pci開發庫,必須要在呼叫pci_lookup_name()之前,初始化為0。否則當/usr/share/hwdata/pci.ids檔案不存在,或則在pci.ids檔案中找不到vendor id(device id)對應的描述時,pci_lookup_name()會segment fault。

struct pci_access *pacc;

pacc = pci_alloc();

pacc->id_lookup_mode = 0;

if( !pci_lookup_name( pacc, name, 256,

pci_lookup_vendor,

vendor,device ) )

printf( "vendor: %s\n", name);

if( !pci_lookup_name( pacc, name, 256,

pci_lookup_device,

vendor,device ) )

printf( "device: %s\n", name);

pci_cleanup(pacc );

三、示例輸出

四、示例**

五、注

1)編譯時,加上-lpci;

2)g++編譯時,引入標頭檔案時,

#ifdef __cplusplus

extern "c"

#endif

不然即使編譯通過,在執行時呼叫pci.h裡面的介面時,會報undefine symbol的錯誤

Wince獲取Wifi的裝置名 連線狀態和訊號強度

ote 需ce4.0或更高版本 相容ndis5.1 支援 一 加入標頭檔案 include include include二 attach to ndisuiohandle hndis createfile ndisuio device name,generic all,0,null,open ex...

Wince獲取Wifi的裝置名 連線狀態和訊號強度

需ce4.0或更高版本 相容ndis5.1 支援 一 加入標頭檔案 include include include二 attach to ndisuiohandle hndis createfile ndisuio device name,generic all,0,null,open existi...

Wince獲取Wifi的裝置名 連線狀態和訊號強度

一 加入標頭檔案 include include include二 attach to ndisuiohandle hndis createfile ndisuio device name,generic all,0,null,open existing,handle invalid handle ...