VirtualAddress, \
Length) \
{ \
- if (VirtualAddress) \
+ if (ARGUMENT_PRESENT(VirtualAddress)) \
*((PVOID*)VirtualAddress) = MmGetSystemAddressForMdl(Buffer); \
\
*((PUINT)Length) = MmGetMdlByteCount(Buffer); \
* OUT PNDIS_BUFFER *FirstBuffer OPTIONAL,
* OUT PUINT TotalPacketLength OPTIONAL);
*/
-#define NdisQueryPacket(Packet, \
- PhysicalBufferCount, \
- BufferCount, \
- FirstBuffer, \
- TotalPacketLength) \
-{ \
- if (FirstBuffer) \
- *((PNDIS_BUFFER*)FirstBuffer) = (Packet)->Private.Head; \
- if ((TotalPacketLength) || (BufferCount) || (PhysicalBufferCount)) \
- { \
- if (!(Packet)->Private.ValidCounts) { \
- UINT _Offset; \
- UINT _PacketLength; \
- PNDIS_BUFFER _NdisBuffer; \
- UINT _PhysicalBufferCount = 0; \
- UINT _TotalPacketLength = 0; \
- UINT _Count = 0; \
- \
- for (_NdisBuffer = (Packet)->Private.Head; \
- _NdisBuffer != (PNDIS_BUFFER)NULL; \
- _NdisBuffer = _NdisBuffer->Next) \
- { \
- _PhysicalBufferCount += NDIS_BUFFER_TO_SPAN_PAGES(_NdisBuffer); \
- NdisQueryBufferOffset(_NdisBuffer, &_Offset, &_PacketLength); \
- _TotalPacketLength += _PacketLength; \
- _Count++; \
- } \
- (Packet)->Private.PhysicalCount = _PhysicalBufferCount; \
- (Packet)->Private.TotalLength = _TotalPacketLength; \
- (Packet)->Private.Count = _Count; \
- (Packet)->Private.ValidCounts = TRUE; \
- } \
- \
- if (PhysicalBufferCount) \
- *((PUINT)PhysicalBufferCount) = (Packet)->Private.PhysicalCount; \
- \
- if (BufferCount) \
- *((PUINT)BufferCount) = (Packet)->Private.Count; \
- \
- if (TotalPacketLength) \
- *((PUINT)TotalPacketLength) = (Packet)->Private.TotalLength; \
- } \
+static __inline
+VOID
+NdisQueryPacket(
+ IN PNDIS_PACKET Packet,
+ OUT PUINT PhysicalBufferCount OPTIONAL,
+ OUT PUINT BufferCount OPTIONAL,
+ OUT PNDIS_BUFFER *FirstBuffer OPTIONAL,
+ OUT PUINT TotalPacketLength OPTIONAL)
+{
+ if (FirstBuffer)
+ *FirstBuffer = Packet->Private.Head;
+ if (TotalPacketLength || BufferCount || PhysicalBufferCount)
+ {
+ if (!Packet->Private.ValidCounts)
+ {
+ UINT Offset;
+ UINT PacketLength;
+ PNDIS_BUFFER NdisBuffer;
+ UINT PhysicalBufferCount = 0;
+ UINT TotalPacketLength = 0;
+ UINT Count = 0;
+
+ for (NdisBuffer = Packet->Private.Head;
+ NdisBuffer != (PNDIS_BUFFER)NULL;
+ NdisBuffer = NdisBuffer->Next)
+ {
+ PhysicalBufferCount += NDIS_BUFFER_TO_SPAN_PAGES(NdisBuffer);
+ NdisQueryBufferOffset(NdisBuffer, &Offset, &PacketLength);
+ TotalPacketLength += PacketLength;
+ Count++;
+ }
+ Packet->Private.PhysicalCount = PhysicalBufferCount;
+ Packet->Private.TotalLength = TotalPacketLength;
+ Packet->Private.Count = Count;
+ Packet->Private.ValidCounts = TRUE;
+ }
+
+ if (PhysicalBufferCount)
+ *PhysicalBufferCount = Packet->Private.PhysicalCount;
+
+ if (BufferCount)
+ *BufferCount = Packet->Private.Count;
+
+ if (TotalPacketLength)
+ *TotalPacketLength = Packet->Private.TotalLength;
+ }
}
/*
#endif
-#if defined(_M_IX86) || defined(_M_AMD64)
+#if defined(_M_IX86) || defined(_M_AMD64) || defined(_M_ARM)
/*
* VOID
} NDIS_INTERRUPT, *PNDIS_INTERRUPT;
-typedef struct _MAP_REGISTER_ENTRY {
- PVOID MapRegister;
- BOOLEAN WriteToDevice;
-} MAP_REGISTER_ENTRY, *PMAP_REGISTER_ENTRY;
-
-
typedef enum _NDIS_WORK_ITEM_TYPE {
NdisWorkItemRequest,
NdisWorkItemSend,
IN PUCHAR Packet,
IN ULONG PacketSize);
-typedef VOID DDKFASTAPI
+typedef VOID FASTCALL
(*NDIS_M_DEQUEUE_WORK_ITEM)(
IN PNDIS_MINIPORT_BLOCK Miniport,
IN NDIS_WORK_ITEM_TYPE WorkItemType,
OUT PVOID *WorkItemContext);
-typedef NDIS_STATUS DDKFASTAPI
+typedef NDIS_STATUS FASTCALL
(*NDIS_M_QUEUE_NEW_WORK_ITEM)(
IN PNDIS_MINIPORT_BLOCK Miniport,
IN NDIS_WORK_ITEM_TYPE WorkItemType,
IN PVOID WorkItemContext);
-typedef NDIS_STATUS DDKFASTAPI
+typedef NDIS_STATUS FASTCALL
(*NDIS_M_QUEUE_WORK_ITEM)(
IN PNDIS_MINIPORT_BLOCK Miniport,
IN NDIS_WORK_ITEM_TYPE WorkItemType,
(*NDIS_M_SEND_RESOURCES_HANDLER)(
IN NDIS_HANDLE MiniportAdapterHandle);
-typedef BOOLEAN DDKFASTAPI
+typedef BOOLEAN FASTCALL
(*NDIS_M_START_SENDS)(
IN PNDIS_MINIPORT_BLOCK Miniport);
NdisMFreeMapRegisters(
IN NDIS_HANDLE MiniportAdapterHandle);
+/*
+ * VOID
+ * EXPORT
+ * NdisMIndicateReceivePacket(
+ * IN NDIS_HANDLE MiniportAdapterHandle,
+ * IN PPNDIS_PACKET ReceivePackets,
+ * IN UINT NumberOfPackets);
+ */
+#define NdisMIndicateReceivePacket(MiniportAdapterHandle, \
+ ReceivePackets, NumberOfPackets) \
+ (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->PacketIndicateHandler)( \
+ MiniportAdapterHandle, ReceivePackets, NumberOfPackets)
+
/*
* VOID
* NdisMIndicateStatus(