社区
网络及通讯开发
帖子详情
如何直接禁用和启用网卡
XBox360
2005-11-11 09:39:52
机器现在是双网卡,一个连接试验板子,
测板子时候需要禁用外网的网卡,有时候又需要禁用测试网卡
有没有办法判断当前两个网卡的状态,并随时禁用和启用。
通过注册表吗?
...全文
295
6
打赏
收藏
如何直接禁用和启用网卡
机器现在是双网卡,一个连接试验板子, 测板子时候需要禁用外网的网卡,有时候又需要禁用测试网卡 有没有办法判断当前两个网卡的状态,并随时禁用和启用。 通过注册表吗?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
netsys2
2005-11-11
打赏
举报
回复
sczyq(我又...........) 的紧用和启动网卡的程序,需要安装DDK:
/*
还是帖出来吧, 我可是花了三天时间才搞定了.
*/
#include <SetupAPI.h>
#include <cfgmgr32.h> // cfgmgr32.h 在Microsoft Windows 2000 DDK 中.
// 要用 CM_Get_DevNode_Status(...) 来查询状态.
//---------------------------------------------------------------------------
typedef struct NetCardStruct
{
DWORD Id; // 网卡设备号
AnsiString Name; // 网卡名
bool Disabled; // 当前是否禁用
bool Changed; // 是否更改过
} TNetCardStruct;
typedef TNetCardStruct* PNetCardStruct;
//---------------------------------------------------------------------------
// EnumNetCards 枚举出网卡
//---------------------------------------------------------------------------
void __fastcall EnumNetCards(TList *NetDeviceList)
{
AnsiString DevValue;
PNetCardStruct NetCard;
DWORD Status, Problem;
LPTSTR Buffer = NULL;
DWORD BufSize = 0;
HDEVINFO hDevInfo = 0;
if (INVALID_HANDLE_VALUE == (hDevInfo =
SetupDiGetClassDevs(NULL,NULL,0,DIGCF_PRESENT|DIGCF_ALLCLASSES)))
return;
SP_DEVINFO_DATA DeviceInfoData = {sizeof(SP_DEVINFO_DATA)};
HKEY hKeyClass;
char DeviceName[200];
for (DWORD DeviceId=0;
SetupDiEnumDeviceInfo(hDevInfo,DeviceId,&DeviceInfoData); DeviceId++)
{
if (CM_Get_DevNode_Status(&Status, &Problem,
DeviceInfoData.DevInst,0) != CR_SUCCESS)
continue;
DevValue.SetLength(0);
if (GetRegistryProperty(hDevInfo, &DeviceInfoData, SPDRP_CLASS , &Buffer, (PULONG)&BufSize))
DevValue = Buffer;
if (DevValue == "Net")
{
DevValue.SetLength(0);
if (GetRegistryProperty(hDevInfo, &DeviceInfoData, SPDRP_ENUMERATOR_NAME , &Buffer, (PULONG)&BufSize))
DevValue = Buffer;
if (DevValue != "ROOT")
{
NetCard = new TNetCardStruct;
NetCard->Id = DeviceId;
NetCard->Name = "<Unknown Device>";
if (GetRegistryProperty(hDevInfo, &DeviceInfoData, SPDRP_DRIVER , &Buffer, (PULONG)&BufSize))
if (GetRegistryProperty(hDevInfo, &DeviceInfoData, SPDRP_DEVICEDESC , &Buffer, (PULONG)&BufSize))
NetCard->Name = Buffer;
NetCard->Disabled = (Status & DN_HAS_PROBLEM) && (CM_PROB_DISABLED == Problem);
NetCard->Changed = false;
NetDeviceList->Add(NetCard);
}
}
}
}
//---------------------------------------------------------------------------
bool __fastcall GetRegistryProperty(HDEVINFO DeviceInfoSet,
PSP_DEVINFO_DATA DeviceInfoData, ULONG Property, PVOID Buffer, PULONG Length)
{
while (!SetupDiGetDeviceRegistryProperty(DeviceInfoSet,
DeviceInfoData, Property, NULL, (BYTE *)*(TCHAR **)Buffer, *Length, Length))
{
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{
if (*(LPTSTR *)Buffer) LocalFree(*(LPTSTR *)Buffer);
*(LPTSTR *)Buffer = (PCHAR)LocalAlloc(LPTR,*Length);
}
else return false;
}
return (*(LPTSTR *)Buffer)[0];
}
//---------------------------------------------------------------------------
// NetCardStateChange 网卡的启用与禁用
// NetCardPoint 是 PNetCardStruct 的指针.
// Enabled true = 启用 false = 禁用
//---------------------------------------------------------------------------
bool __fastcall NetCardStateChange(void * NetCardPoint, bool Enabled)
{
PNetCardStruct NetCard = (PNetCardStruct)NetCardPoint;
DWORD DeviceId = NetCard->Id;
HDEVINFO hDevInfo = 0;
if (INVALID_HANDLE_VALUE == (hDevInfo =
SetupDiGetClassDevs(NULL,NULL,0,DIGCF_PRESENT|DIGCF_ALLCLASSES)))
return false;
SP_DEVINFO_DATA DeviceInfoData = {sizeof(SP_DEVINFO_DATA)};
DWORD Status, Problem;
if (!SetupDiEnumDeviceInfo(hDevInfo,DeviceId,&DeviceInfoData))
return false;
if (CM_Get_DevNode_Status(&Status, &Problem,
DeviceInfoData.DevInst,0) != CR_SUCCESS)
return false;
SP_PROPCHANGE_PARAMS PropChangeParams = {sizeof(SP_CLASSINSTALL_HEADER)};
PropChangeParams.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE;
PropChangeParams.Scope = DICS_FLAG_GLOBAL;
if (Enabled)
{
if (!((Status & DN_HAS_PROBLEM) && (CM_PROB_DISABLED == Problem)))
{
NetCard->Disabled = false;
return false;
}
PropChangeParams.StateChange = DICS_ENABLE;
}
else
{
if ((Status & DN_HAS_PROBLEM) && (CM_PROB_DISABLED == Problem))
{
NetCard->Disabled = true;
return false;
}
if (!((Status & DN_DISABLEABLE) && (CM_PROB_HARDWARE_DISABLED != Problem)))
return false;
PropChangeParams.StateChange = DICS_DISABLE;
}
if (!SetupDiSetClassInstallParams(hDevInfo, &DeviceInfoData,
(SP_CLASSINSTALL_HEADER *)&PropChangeParams, sizeof(PropChangeParams)))
return false;
if (!SetupDiCallClassInstaller(DIF_PROPERTYCHANGE, hDevInfo, &DeviceInfoData))
return false;
if (CM_Get_DevNode_Status(&Status, &Problem,
DeviceInfoData.DevInst,0) == CR_SUCCESS)
NetCard->Disabled = (Status & DN_HAS_PROBLEM) && (CM_PROB_DISABLED == Problem);
return true;
}
ccrun.com
2005-11-11
打赏
举报
回复
前两天刚看见一段代码。搜搜去。
genpichong
2005-11-11
打赏
举报
回复
http://bbs.csai.cn/bbs/view.Asp?Id={476F5206-5F7A-4F13-A36D-2FCBF7E4C270}
我已经在这个链接为你解答了这个问题
希望对楼主有帮助...
ccrun.com
2005-11-11
打赏
举报
回复
恩。对,就是这段代码,我找了半天没找到。其中用到几个函数需要安装DDK。
netsys2
2005-11-11
打赏
举报
回复
那你得问sczyq,代码是他的,而且有人用过的。
XBox360
2005-11-11
打赏
举报
回复
1楼的,你给的东西里面是光驱,软驱,USB的禁用和启用啊
netsys2(来电!) 有没有不用装DDK的,
DDK有60多M
L - Queries on a String Gym - 101755L(贪心)
A string s is given. Also there is a string p, and initially it is empty. You need to perform q operations of kind «add a letter to the end of the string p» and «remove a letter from the end of the st...
L - Queries on a String Gym - 101755L (字符串的查询)
A stringsis given. Also there is a stringp, and initially it is empty. You need to performqoperations of kind «add a letter to the end of the stringp» and «remove a letter from the end of the st...
ISP ap0100cs调试经验.pdf
源码链接: https://pan.quark.cn/s/9f500ac403c2 摄像头配置是嵌入式系统构建中的一个关键步骤,它涉及到硬件与软件的紧密协作。图像信号处理器(ISP)作为图像信号处理的核心单元,在摄像头配置过程中扮演着至关重要的角色。在硬件层面,它涵盖了摄像头与ISP之间的连接以及信号传输的细节;在软件层面,主要依托V4L2框架进行视频流的采集和处理。接下来将具体说明文档中涉及的硬件机制、软件机制、信号配置及V4L2等领域的摄像头配置实践经验。 ### 硬件机制与连接 文档首先阐述了硬件线路中中央处理器与摄像头之间的连接方式。在此,相机串行接口(CSI)模块是摄像头数据传输的核心部分,它负责与外部CMOS图像感应元件进行交互。CSI接口包含以下几个关键信号线: 1. **CSI_VSYNC (垂直同步信号)**:用于标示一帧图像的起始点。该信号传输方向为从图像感应元件(sensor)至应用处理器(AP)。 2. **CSI_HSYNC (水平同步信号)**:用于提供行同步信号,并用于识别消隐信号。同样,信号流向为sensor至AP。 3. **CSI_D[7:0]**:8位摄像头数据总线,用于传输各种图像数据,包括YUV、YCC、RGB或Bayer格式。数据流向为sensor至AP。 4. **CSI_MCLK (传感器主时钟信号)**:由传感器输出主时钟信号,为外部摄像头提供时钟基准。信号流向为AP至sensor。 5. **CSI_PIXCLK (像素时钟信号)**:由摄像头输出,通常与MCLK主时钟信号频率相同。信号流向为sensor至AP。 正确设置这些连接,确保信号同步传输,是硬件配置的基础。 ### 软件机制与驱动程序 摄像头驱动...
YOLO26算法农业科研温室大豆目标检测+训练好的模型+777张数据集+pyqt可视化界面.zip
文末附数据集可视化效果图。 【数据集概况】 · 检测类别(中文):[大豆(soybean)] · 训练集:777 张 · 验证集:0 张 · 测试集:0 张 · 总计:777 张 该数据集聚焦农业科研领域,针对温室环境下大豆幼苗的精准检测需求,为植物生长监测与自动化管理提供高质量数据支撑。训练集777张,验证集和测试集为0张,符合农业科研场景中对特定生长阶段样本集中训练的需求,确保模型在目标场景下的泛化能力。所有样本均采用精准的边界框标注,标注规范统一,确保了数据集在大豆幼苗检测任务中的高精度与可靠性。该数据集可应用于农业科研机构的植物生长监测系统、智能温室管理平台等场景,... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 100 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9922** mAP50-95 | 0.9141 Precision | 0.9771 Recall | 0.9710 train/box_loss | 0.4231 train/cls_loss | 0.1829 val/box_loss | 0.3920 val/cls_loss | 0.1737 【训练过程分析】 100 轮训练后 mAP50 达到 0.9922,模型收敛良好。Loss 曲线前段快速下降,后段趋于平稳,val_loss 无反弹,没有明显过拟合。mAP50-95 为 0.9141,和 mAP50 差距仅 0.08,框的定位精度也很扎实。 【模型性能评估】 Precision 0.9771、Recall 0.9710,精召双高,模型对大豆的检测能力强。...
YOLO算法工业车间热熔胶枪目标检测数据集-1402张-包含 VOC 和 Yolo 格式标签-支持多种算法训练模型.zip
详情可查看下方数据集可视化效果。 YOLO工业车间热熔胶枪目标检测数据集 目标类别:['GLUE GUN'] 中文类别:['热熔胶枪'] 训练集:1224 张 验证集:119 张 测试集:59 张 总计:1402 张 该数据集提供了data.yaml文件,内容如下: train: ../train/images val: ../valid/images test: ../test/images nc: 1 names: ['GLUE GUN']
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章