当前位置: 代码迷 >> 驱动开发 >> NDIS6.0的filter如何丢包
  详细解决方案

NDIS6.0的filter如何丢包

热度:79   发布时间:2016-04-28 11:09:20.0
NDIS6.0的filter怎么丢包?
微软例子里的
VOID   FilterSendNetBufferLists(
                IN     NDIS_HANDLE                 FilterModuleContext,
                IN     PNET_BUFFER_LIST         NetBufferLists,
                IN     NDIS_PORT_NUMBER         PortNumber,
                IN     ULONG                             SendFlags
                )

{
        PMS_FILTER                     pFilter   =   (PMS_FILTER)FilterModuleContext;
        NDIS_STATUS                 Status   =   NDIS_STATUS_SUCCESS;
        PNET_BUFFER_LIST         CurrNbl;
        BOOLEAN                         DispatchLevel;
  do
        {

            DispatchLevel   =   NDIS_TEST_SEND_AT_DISPATCH_LEVEL(SendFlags);
            if   (pFilter-> TrackSends)
                {
                        FILTER_ACQUIRE_LOCK(&pFilter-> Lock,   DispatchLevel);
                        CurrNbl   =   NetBufferLists;
                        while   (CurrNbl)
                        {
                                pFilter-> OutstandingSends++;
                                FILTER_LOG_SEND_REF(1,   pFilter,   CurrNbl,   pFilter-> OutstandingSends);

                                CurrNbl   =   NET_BUFFER_LIST_NEXT_NBL(CurrNbl);
                        }
                        FILTER_RELEASE_LOCK(&pFilter-> Lock,   DispatchLevel);
                }
                //
                //   If   necessary,   queue   the   NetBufferList   in   a   local   structure   for   later   processing
                //
                NdisFSendNetBufferLists(pFilter-> FilterHandle,   NetBufferLists,   PortNumber,   SendFlags);


        }
        while   (FALSE);

        DEBUGP(DL_TRACE,   ( " <===SendNetBufferList:   Status   =   %8x.\n ",   Status));
  相关解决方案