阅读:2514回复:24
NDIS passthru 例子 中能不能这样修改 请指点
我如果想在应用层传递数据到 passthru 驱动中 在passthru的DriverEntry中能不能加
// Initialize function pointers DriverObject->DriverUnload = DriverUnload; DriverObject->DriverExtension->AddDevice = AddDevice; DriverObject->MajorFunction[IRP_MJ_CREATE] = DispatchCreate; DriverObject->MajorFunction[IRP_MJ_CLOSE] = DispatchClose; DriverObject->MajorFunction[IRP_MJ_READ] =DispatchReadWrite; DriverObject->MajorFunction[IRP_MJ_WRITE]=DispatchReadWrite; DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DispatchControl; 并通过deviceiocontrol 传数据进去的 |
|
沙发#
发布于:2003-02-24 14:19
可以通过这中方式来做
|
|
|
板凳#
发布于:2003-02-24 14:23
不过你要注意driver和device的区别,ndis里面要注册NdisMRegisterDevice,不是driver
|
|
|
地板#
发布于:2003-02-24 14:28
实在很抱歉 我懂的很少 你说的driver 和 device 区别是什么意思
|
|
地下室#
发布于:2003-02-24 14:31
而且 DriverObject->DriverUnload = DriverUnload;
我添加上这样的代码 编译时说DriverObject没有 DriverUnload |
|
5楼#
发布于:2003-02-24 14:32
还有其他方法 可以实现从应用层传数据 到内核中么?
|
|
6楼#
发布于:2003-02-24 14:59
看一下ddk里面NdisMRegisterDevice的说明先
|
|
|
7楼#
发布于:2003-02-24 15:50
看过了 对MajorFunction 怎么赋值啊 哪里有没有例子的啊
NdisMRegisterDevice( WrapperHandle,// IN NDIS_HANDLE NdisWrapperHandle, myName, //IN PNDIS_STRING DeviceName, myName, //IN PNDIS_STRING SymbolicName, MajorFunction,//IN PDRIVER_DISPATCH MajorFunctions[], myDriverObject,//OUT PDEVICE_OBJECT *pDeviceObject, NdisDeviceHandle,//OUT NDIS_HANDLE *NdisDeviceHandle ); |
|
8楼#
发布于:2003-02-24 16:00
NDIS_STATUS status = NDIS_STATUS_SUCCESS;
UNICODE_STRING DeviceName; UNICODE_STRING DeviceLinkUnicodeString; PDRIVER_DISPATCH DispatchTable[IRP_MJ_MXAIMUM_FUNCTION]; PDEVICE_OBJECT deviceObject; NDIS_HANDLE NdisDeviceHandle; UINT i; for (i = 0; i < IRP_MJ_MAXIMUM_FUNCTION; i++) { DispatchTable = yourdispatchfun; } NdisInitUnicodeString(&DeviceName, NT_DEVICE_NAME); NdisInitUnicodeString(&DeviceLinkUnicodeString, DOS_DEVICE_NAME); status = NdisMRegisterDevice( NdisWrapperHandle, &DeviceName, &DeviceLinkUnicodeString, &DispatchTable[0], &deviceObject, // global variable &NdisDeviceHandle //global variable ); return status; } 大概就是这样的过程 [编辑 - 2/24/03 by mikeluo] |
|
|
9楼#
发布于:2003-02-24 16:32
for (i = 0; i < IRP_MJ_MAXIMUM_FUNCTION; i++)
{ DispatchTable = IPSecConfigProc; } 中是不是 DispatchTable = IPSecConfigProc; 啊? IPSecConfigProc 这个是处理所有IRP的 函数么? |
|
10楼#
发布于:2003-02-24 16:39
你不会替换成自己的函数么????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
|
|
|
11楼#
发布于:2003-02-24 17:21
把windows下的passthru看明白,差不多也就明白了
|
|
|
12楼#
发布于:2003-02-24 17:58
kaput 你是说 那个什么都不做的例子?
|
|
13楼#
发布于:2003-02-24 19:50
2k ddk中的passthru的例子没有这段,不过xp的例子里面有
|
|
|
14楼#
发布于:2003-02-25 10:48
谢谢你 给分 我去看例子 我懂得东西不多 谢谢你告诉我在哪里看例子 这可能就是说的 师父领进门修行在个人 吧 呵呵
非常感谢 嗯 怎么给你分 |
|
15楼#
发布于:2003-02-25 10:51
我给完了 希望下次还能得到你的解答 谢谢 祝好
|
|
16楼#
发布于:2003-02-25 11:06
看win xp的,win2k的没用
更正 winxp下的NdisUio很不错,就是一开始会被它的宏搞昏。下面说的是指NdisUio winxp在PacketSize> LookAheadBufferSizes时的NdisTranferdata()用了一个小小的技巧,很有意思。 [编辑 - 2/25/03 by kaput] [编辑 - 2/25/03 by kaput] |
|
|
17楼#
发布于:2003-02-25 11:11
passthru里面有调用NdisTranferdata么?
|
|
|
18楼#
发布于:2003-02-25 12:18
mikeluo:
你的那段代码是XP PASSTHRU里的吗? 要仔细看看XP PASSTHRU了 |
|
|
19楼#
发布于:2003-02-25 12:33
passthru里面有调用NdisTranferdata么? 混了--- 我看的是winxp的passthru和NdisUio 我把他们合2为一了。 实际是NdisUio里面的。 这个东西很久以前做完了就没管了,搞混了 |
|
|
上一页
下一页