myfun.h
上传用户:yitai_qhd
上传日期:2008-04-24
资源大小:31k
文件大小:3k
开发平台:

Visual C++

  1. #ifndef _MYFUN_H
  2. #define _MYFUN_H
  3. #pragma once
  4. extern "C"
  5. {
  6. #include "ntddk.h"
  7. #ifndef dprintf
  8.     #define dprintf KdPrint
  9.     #endif
  10. }
  11. #include "ndis.h"
  12. #define PASS 0
  13. #define HOOK_SEND 1
  14. #define HOOK_SEND_PACKETS 2
  15. #define NDIS_API __stdcall
  16. #define UNICODE_STRING_CONST(x) {sizeof(L##x)-2, sizeof(L##x), L##x}
  17. struct _NDIS_PROTOCOL_BLOCK
  18. {
  19. PNDIS_OPEN_BLOCK OpenQueue; // queue of opens for this protocol
  20. REFERENCE Ref; // contains spinlock for OpenQueue
  21. UINT Length; // of this NDIS_PROTOCOL_BLOCK struct
  22. NDIS50_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics;// handler addresses
  23. struct _NDIS_PROTOCOL_BLOCK * NextProtocol; // Link to next
  24. ULONG MaxPatternSize;
  25. #if defined(NDIS_WRAPPER)
  26. //
  27. // Protocol filters
  28. //
  29. struct _NDIS_PROTOCOL_FILTER * ProtocolFilter[NdisMediumMax+1];
  30. WORK_QUEUE_ITEM WorkItem; // Used during NdisRegisterProtocol to
  31. // notify protocols of existing drivers.
  32. KMUTEX Mutex; // For serialization of Bind/Unbind requests
  33. PKEVENT DeregEvent; // Used by NdisDeregisterProtocol
  34. #endif
  35. };
  36. typedef _NDIS_PROTOCOL_BLOCK *PNDIS_PROTOCOL_BLOCK;
  37. VOID NDIS_API
  38. MY_NdisSend(
  39.     PNDIS_STATUS Status,
  40.     NDIS_HANDLE NdisBindingHandle,
  41.     PNDIS_PACKET Packet
  42. );
  43. VOID NDIS_API
  44. MY_NdisRegisterProtocol(
  45.     OUT PNDIS_STATUS Status,
  46.     OUT PNDIS_HANDLE NdisProtocolHandle,
  47.     IN PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics,
  48.     IN UINT CharacteristicsLength
  49. );
  50. VOID NDIS_API
  51. MY_OpenAdapterComplete(
  52.     IN NDIS_HANDLE ProtocolBindingContext,
  53.     IN NDIS_STATUS Status,
  54.     IN NDIS_STATUS OpenErrorStatus
  55. );
  56. NDIS_STATUS NDIS_API
  57. MY_Receive(
  58.     IN NDIS_HANDLE NdisBindingContext,
  59.     IN NDIS_HANDLE MacReceiveContext,
  60.     IN PVOID HeaderBuffer,
  61.     IN UINT HeaderBufferSize,
  62.     IN PVOID LookAheadBuffer,
  63.     IN UINT LookaheadBufferSize,
  64.     IN UINT PacketSize
  65. );
  66. VOID NDIS_API
  67. MY_NdisOpenAdapter(
  68. OUT PNDIS_STATUS  Status,
  69. OUT PNDIS_STATUS  OpenErrorStatus,
  70. OUT PNDIS_HANDLE  NdisBindingHandle,
  71. OUT PUINT  SelectedMediumIndex,
  72. IN PNDIS_MEDIUM  MediumArray,
  73. IN UINT  MediumArraySize,
  74. IN NDIS_HANDLE  NdisProtocolHandle,
  75. IN NDIS_HANDLE  ProtocolBindingContext,
  76. IN PNDIS_STRING  AdapterName,
  77. IN UINT  OpenOptions,
  78. IN PSTRING  AddressingInformation  OPTIONAL
  79. );
  80. VOID 
  81. MY_HookSend(
  82. IN NDIS_HANDLE ProtocolBlock, 
  83. IN PVOID HookFunction,
  84. OUT PVOID* SendHandler,
  85. IN unsigned char HookType
  86. );
  87. NDIS_STATUS NDIS_API
  88. MY_SendPacket(
  89. IN NDIS_HANDLE MacBindingHandle,
  90. IN PNDIS_PACKET Packet
  91. );
  92. VOID NDIS_API
  93. MY_WanSendPackets(
  94. IN NDIS_HANDLE  NdisBindingHandle,
  95. IN PPNDIS_PACKET  PacketArray,
  96. IN UINT  NumberOfPackets
  97. );
  98. int CheckSend(
  99. IN PNDIS_PACKET packet
  100. );
  101. int CheckPacket(
  102. IN PNDIS_PACKET packet,
  103. IN BOOLEAN IsSend
  104. );
  105. int CheckRecv(
  106.     IN PVOID HeaderBuffer,
  107.     IN UINT HeaderBufferSize,
  108.     IN PVOID LookAheadBuffer,
  109.     IN UINT LookaheadBufferSize,
  110.     IN UINT PacketSize
  111. );
  112. #endif