阅读:1124回复:1
关于在ptbindadpter中初始化miniport的一个小问题
一直有个小问题不是很明白,如题。
NDIS_HANDLE ConfigHandle = NULL; PNDIS_CONFIGURATION_PARAMETER Param; NDIS_STRING DeviceStr = NDIS_STRING_CONST("UpperBinds");//为什么一定要叫这个名字 PADAPTER pAdapter = NULL; NDIS_STATUS Status; UINT MediumIndex; #ifdef _DEBUG DbgPrint("==> Now FFPtBindAdapter is starting...n"); #endif do { NdisOpenProtocolConfiguration(Status,&ConfigHandle,SystemSpecific1); if(*pStatus!=NDIS_STATUS_SUCCESS) break; NdisReadConfiguration(pStatus,&Param,ConfigHandle,&DeviceStr,NdisParameterString;//从注册表中读取数据,有devicestr也就是uppperbinds指定的数据吗? if(*pStatus!=NDIS_STATUS_SUCCESS) break; NdisAllocateMemoryWithTag(&pAdapter,sizeof(ADAPTER),TAG); if (pAdapter == NULL) { *Status = NDIS_STATUS_RESOURCES; break; } NdisZeroMemory(pAdapter,sizeof(ADAPTER)); NdisInitializeEvent(&pAdapter->Event); KeInitializeSpinLock(&pAdapter->SpinLock); NdisAllocatePacketPoolEx(pStatus,&pAdapter->SendPacketPoolHandle, MIN_PACKET_POOL_SIZE, MAX_PACKET_POOL_SIZE - MIN_PACKET_POOL_SIZE, sizeof(RSVD)); if (*pStatus != NDIS_STATUS_SUCCESS) break; NdisOpenAdapter(pStatus,&Status,&pAdapter->BindHandle, &MediumIndex, MediumArray, sizeof(MediumArray)/sizeof(NDIS_MEDIUM), g_ProtocolHandle, pAdapter, DeviceName, 0, NULL); if (*pStatus == NDIS_STATUS_PENDING) { NdisWaitEvent(&pAdapter->Event,0); *pStatus = pAdapter->Status; } if (*pStatus != NDIS_STATUS_SUCCESS) break; pAdapter->Medium = MediumArray[MediumIndex]; //2004-4-7 g_protocolhandle and g_mpdriverhandle,早就在driverentry初始化完毕了。 NdisIMInitializeDeviceInstanceEx(g_MpDriverHandle,&Param->ParameterData.StringData,pAdapter); } while(FALSE); } upperbinds跟inf文件有关系吗? [编辑 - 4/7/04 by dlmufox] |
|
沙发#
发布于:2004-04-08 15:06
已经搞定了,文档没看仔细,又是微软的技术壁垒,恶心!
In the context of BindAdapterHandler and after opening of the underlying physical adapter succeeds, the Passthru driver queries the reserved keyword "UpperBindings" to get a list of device names for the virtual adapters that this particular binding is to expose. |
|