kag*_*san 2 configuration user-interface ndis device-driver inf
我有一个NDIS驱动程序,它在连接属性的已安装项目列表和设备管理器中列出; 问题是,如何编写一个用于管理驱动程序属性的扩展,以及如何安装它?
当然,普通的GUI程序可以与驱动程序通信,设置属性,获取版本号和其他统计信息等,这就是DeviceIoControl所存在的; 但是,这是否意味着不存在专用接口来通知驱动程序有关配置更改的信息?

如果有人能将这个问题转发到eggheadcafe/osr的ntdev列表,那将是令人愉快的.
如果您希望网络驱动程序在"LAN属性"对话框中具有某些UI,则需要执行以下操作:
创建一个NotifyObject(如果你还没有)
NotifyObject本质上是与您的驱动程序关联的COM对象.做一个,
DllGetClassObject一个继承的C++类来自CComObjectRoot和CComCoClass,OBJECT_ENTRY_AUTO以及BEGIN_COM_MAP如果您是COM的新手,请致电.)ClsId={guid}与驱动程序相关联ComponentDll=filename.在COM对象上实现INetCfgComponentPropertyUi
关键的方法是MergePropPages.在此方法中,您将分配propertiesysheet页面并将它们合并到适配器属性中.此操作看起来像这个伪代码:
HPROPSHEETPAGE *psharray = CoTaskMemAlloc(NUMBER_OF_PAGES * sizeof(HPROPSHEETPAGE);
for (i = 0; i < NUMBER_OF_PAGES; i++)
psharray[i] = CreatePropertySheetPage(&psp);
Run Code Online (Sandbox Code Playgroud)API是交易性的.确保应用ApplyProperties方法中的任何更改,并(如果适用)撤消它们CancelProperties.
QueryPropertyUi或中执行任何操作SetContext,但如果您需要获取注册表项位置,则可能需要保存上下文.测试您的更改
如果一切顺利,那么每次有任何网络配置更改时,您的新通知对象都将被加载.如果正在显示GUI,则Windows将在您的类中查询INetCfgComponentPropertyUi接口并调用MergePropPages.
我发现在我的DLL中的关键位置放入硬编码断点是有帮助的,然后附加一个内核调试器,这样我总能找到DLL,无论哪个进程加载它.(在Windows 7上,您将加载到drvinst.exe中,使用用户模式调试器很难找到它.)
| 归档时间: |
|
| 查看次数: |
366 次 |
| 最近记录: |