mirror of
https://github.com/stasenso/SHA256.git
synced 2026-06-27 05:42:43 +03:00
Исправно компилируется в DLL, но нет соглашения о вызовах
This commit is contained in:
@@ -0,0 +1,163 @@
|
||||
ARC_RECEIVE_BUFFERS equ 64
|
||||
ARC_BUFFER_LIST STRUC
|
||||
Buffer PVOID ?
|
||||
_Size UINT ?
|
||||
BytesLeft UINT ?
|
||||
Next PVOID ?
|
||||
ARC_BUFFER_LIST ENDS
|
||||
PARC_BUFFER_LIST TYPEDEF PTR ARC_BUFFER_LIST
|
||||
ARCNET_ADDRESS_LEN equ 1
|
||||
ARC_PROTOCOL_HEADER STRUC
|
||||
SourceId UCHAR ARCNET_ADDRESS_LEN dup(?) ; Source Address
|
||||
DestId UCHAR ARCNET_ADDRESS_LEN dup(?) ; Destination Address
|
||||
ProtId UCHAR ? ; Protocol ID
|
||||
ARC_PROTOCOL_HEADER ENDS
|
||||
PARC_PROTOCOL_HEADER TYPEDEF PTR ARC_PROTOCOL_HEADER
|
||||
ARC_PACKET_HEADER STRUC
|
||||
ProtHeader ARC_PROTOCOL_HEADER<> ; // Protocol header
|
||||
USHORT FrameSequence; // Frame sequence Number
|
||||
UCHAR SplitFlag; // Split flag
|
||||
UCHAR LastSplitFlag; // Split Flag for the last frame
|
||||
UCHAR FramesReceived; // Frames in This Packet
|
||||
ARC_PACKET_HEADER ENDS
|
||||
PARC_PACKET_HEADER TYPEDEF PTR ARC_PACKET_HEADER
|
||||
|
||||
typedef struct _ARC_PACKET
|
||||
{
|
||||
ARC_PACKET_HEADER Header; // Information about the packet
|
||||
struct _ARC_PACKET * Next; // Next packet in use by filter
|
||||
ULONG TotalLength;
|
||||
BOOLEAN LastFrame;
|
||||
PARC_BUFFER_LIST FirstBuffer;
|
||||
PARC_BUFFER_LIST LastBuffer;
|
||||
NDIS_PACKET TmpNdisPacket;
|
||||
} ARC_PACKET, * PARC_PACKET;
|
||||
|
||||
|
||||
#define ARC_PROTOCOL_HEADER_SIZE (sizeof(ARC_PROTOCOL_HEADER))
|
||||
#define ARC_MAX_FRAME_SIZE 504
|
||||
#define ARC_MAX_ADDRESS_IDS 256
|
||||
#define ARC_MAX_FRAME_HEADER_SIZE 6
|
||||
#define ARC_MAX_PACKET_SIZE 576
|
||||
|
||||
|
||||
//
|
||||
// Check whether an address is broadcast.
|
||||
//
|
||||
|
||||
#define ARC_IS_BROADCAST(Address) \
|
||||
(BOOLEAN)(!(Address))
|
||||
|
||||
|
||||
//
|
||||
// An action routine type. The routines are called
|
||||
// when a filter type is set for the first time or
|
||||
// no more bindings require a particular type of filter.
|
||||
//
|
||||
// NOTE: THIS ROUTINE SHOULD ASSUME THAT THE LOCK IS ACQUIRED.
|
||||
//
|
||||
typedef
|
||||
NDIS_STATUS
|
||||
(*ARC_FILTER_CHANGE)(
|
||||
IN UINT OldFilterClasses,
|
||||
IN UINT NewFilterClasses,
|
||||
IN NDIS_HANDLE MacBindingHandle,
|
||||
IN PNDIS_REQUEST NdisRequest,
|
||||
IN BOOLEAN Set
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// This action routine is called when the mac requests a close for
|
||||
// a particular binding *WHILE THE BINDING IS BEING INDICATED TO
|
||||
// THE PROTOCOL*. The filtering package can't get rid of the open
|
||||
// right away. So this routine will be called as soon as the
|
||||
// NdisIndicateReceive returns.
|
||||
//
|
||||
// NOTE: THIS ROUTINE SHOULD ASSUME THAT THE LOCK IS ACQUIRED.
|
||||
//
|
||||
typedef
|
||||
VOID
|
||||
(*ARC_DEFERRED_CLOSE)(
|
||||
IN NDIS_HANDLE MacBindingHandle
|
||||
);
|
||||
|
||||
typedef ULONG MASK,*PMASK;
|
||||
|
||||
//
|
||||
// Maximum number of opens the filter package will support. This is
|
||||
// the max so that bit masks can be used instead of a spaghetti of
|
||||
// pointers.
|
||||
//
|
||||
#define ARC_FILTER_MAX_OPENS (sizeof(ULONG) * 8)
|
||||
|
||||
|
||||
//
|
||||
// The binding info is threaded on two lists. When
|
||||
// the binding is free it is on a single freelist.
|
||||
//
|
||||
// When the binding is being used it is on an index list.
|
||||
//
|
||||
typedef struct _ARC_BINDING_INFO
|
||||
{
|
||||
NDIS_HANDLE MacBindingHandle;
|
||||
NDIS_HANDLE NdisBindingContext;
|
||||
UINT PacketFilters;
|
||||
ULONG References;
|
||||
struct _ARC_BINDING_INFO * NextOpen;
|
||||
BOOLEAN ReceivedAPacket;
|
||||
// UCHAR FilterIndex;
|
||||
UINT OldPacketFilters;
|
||||
} ARC_BINDING_INFO,*PARC_BINDING_INFO;
|
||||
|
||||
//
|
||||
// An opaque type that contains a filter database.
|
||||
// The MAC need not know how it is structured.
|
||||
//
|
||||
typedef struct _ARC_FILTER
|
||||
{
|
||||
//
|
||||
// For accessing the mini-port.
|
||||
//
|
||||
struct _NDIS_MINIPORT_BLOCK *Miniport;
|
||||
|
||||
//
|
||||
// Spin lock used to protect the filter from multiple accesses.
|
||||
//
|
||||
PNDIS_SPIN_LOCK Lock;
|
||||
|
||||
//
|
||||
// Combination of all the filters of all the open bindings.
|
||||
//
|
||||
UINT CombinedPacketFilter;
|
||||
|
||||
//
|
||||
// Pointer for traversing the open list.
|
||||
//
|
||||
PARC_BINDING_INFO OpenList;
|
||||
|
||||
//
|
||||
// Action routines to be invoked on notable changes in the filter.
|
||||
//
|
||||
|
||||
ARC_FILTER_CHANGE FilterChangeAction;
|
||||
ARC_DEFERRED_CLOSE CloseAction;
|
||||
|
||||
NDIS_HANDLE ReceiveBufferPool;
|
||||
|
||||
PARC_BUFFER_LIST FreeBufferList;
|
||||
PARC_PACKET FreePackets;
|
||||
|
||||
PARC_PACKET OutstandingPackets;
|
||||
|
||||
//
|
||||
// Address of the adapter.
|
||||
//
|
||||
UCHAR AdapterAddress;
|
||||
|
||||
UINT OldCombinedPacketFilter;
|
||||
|
||||
} ARC_FILTER,*PARC_FILTER;
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user