implemented NdisScheduleWorkItem writen by me and arty

svn path=/trunk/; revision=32750
This commit is contained in:
Magnus Olsen 2008-03-22 22:11:54 +00:00
parent 9797b5eeb0
commit 6c16e66402
3 changed files with 35 additions and 11 deletions

View file

@ -269,5 +269,6 @@ NdisWritePciSlotInformation@20
NdisWritePcmciaAttributeMemory@16 NdisWritePcmciaAttributeMemory@16
TrFilterDprIndicateReceive@28 TrFilterDprIndicateReceive@28
TrFilterDprIndicateReceiveComplete@4 TrFilterDprIndicateReceiveComplete@4
NdisScheduleWorkItem@4
; EOF ; EOF

View file

@ -10,7 +10,6 @@
#include "ndissys.h" #include "ndissys.h"
/* /*
* @unimplemented * @unimplemented
*/ */
@ -1037,4 +1036,27 @@ NdisIMInitializeDeviceInstanceEx(
return NDIS_STATUS_FAILURE; return NDIS_STATUS_FAILURE;
} }
VOID
STDCALL
ndisProcWorkItemHandler(PVOID pContext)
{
PNDIS_WORK_ITEM pNdisItem = (PNDIS_WORK_ITEM)pContext;
pNdisItem->Routine(pNdisItem, pNdisItem->Context);
}
EXPORT
NDIS_STATUS
NdisScheduleWorkItem(
IN PNDIS_WORK_ITEM pWorkItem)
{
PWORK_QUEUE_ITEM pntWorkItem = (PWORK_QUEUE_ITEM)pWorkItem->WrapperReserved;
ExInitializeWorkItem(pntWorkItem, ndisProcWorkItemHandler, pWorkItem);
ExQueueWorkItem(pntWorkItem, CriticalWorkQueue);
return NDIS_STATUS_SUCCESS;
}
/* EOF */ /* EOF */

View file

@ -2285,7 +2285,7 @@ NdisDestroyLookaheadBufferFromSharedMemory(
#endif #endif
#if defined(_M_IX86) || defined(_M_AMD64) || defined(_M_ARM) #if defined(_M_IX86) || defined(_M_AMD64) || defined(_M_ARM) || defined(_M_PPC)
/* /*
* VOID * VOID
@ -2309,17 +2309,17 @@ NdisDestroyLookaheadBufferFromSharedMemory(
#else #else
#define NdisMoveMappedMemory(Destination, Source, Length) \ #define NdisMoveMappedMemory(Destination, Source, Length) \
{ { \
PUCHAR _Dest = Destination, _Src = Source, _End = _Dest + Length; PUCHAR _Dest = Destination, _Src = Source, _End = _Dest + Length; \
while (_Dest < _End) while (_Dest < _End) \
*_Dest++ = _Src++; *_Dest++ = _Src++; \
} }
#define NdisZeroMappedMemory(Destination, Length) \ #define NdisZeroMappedMemory(Destination, Length) \
{ { \
PUCHAR _Dest = Destination, _End = _Dest + Length; PUCHAR _Dest = Destination, _End = _Dest + Length; \
while (_Dest < _End) while (_Dest < _End) \
*_Dest++ = 0; *_Dest++ = 0; \
} }
#endif /* _M_IX86 or _M_AMD64 */ #endif /* _M_IX86 or _M_AMD64 */
@ -4152,6 +4152,8 @@ typedef struct _NDIS_MINIPORT_WORK_ITEM {
PVOID WorkItemContext; PVOID WorkItemContext;
} NDIS_MINIPORT_WORK_ITEM, *PNDIS_MINIPORT_WORK_ITEM; } NDIS_MINIPORT_WORK_ITEM, *PNDIS_MINIPORT_WORK_ITEM;
/* Forward declare to pick up a consistent type */
typedef struct _NDIS_WORK_ITEM;
#pragma warning(push) #pragma warning(push)
typedef VOID (*NDIS_PROC)(struct _NDIS_WORK_ITEM *, PVOID); typedef VOID (*NDIS_PROC)(struct _NDIS_WORK_ITEM *, PVOID);
#pragma warning(pop) #pragma warning(pop)
@ -4162,7 +4164,6 @@ typedef struct _NDIS_WORK_ITEM
UCHAR WrapperReserved[8*sizeof(PVOID)]; UCHAR WrapperReserved[8*sizeof(PVOID)];
} NDIS_WORK_ITEM, *PNDIS_WORK_ITEM; } NDIS_WORK_ITEM, *PNDIS_WORK_ITEM;
typedef struct _NDIS_BIND_PATHS { typedef struct _NDIS_BIND_PATHS {
UINT Number; UINT Number;
NDIS_STRING Paths[1]; NDIS_STRING Paths[1];