⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tdiqtest.c

📁 网络驱动开发
💻 C
📖 第 1 页 / 共 2 页
字号:
// Simple driver that demonstrates dynamically loading and unloading

#include "ndis.h"
#include "TDI.H"
#include "TDIKRNL.H"
#include "KSTcpEx.h"
#include "KSUtil.h"

#define NT_DEVICE_NAME_W     L"\\Device\\TDIQtest"
#define DOS_DEVICE_NAME_W    L"\\DosDevices\\TDIQtest"

#define TL_INSTANCE  0

#define MAX_FAST_ENTITY_BUFFER ( sizeof(TDIEntityID) * 20 )
#define MAX_FAST_ADDRESS_BUFFER ( sizeof(IPAddrEntry) * 10 )

TDI_PROVIDER_INFO          g_TdiProviderInfo;
TDI_PROVIDER_STATISTICS    g_TdiProviderStatistics;

#define ADDR_TAB_COUNT 20
IPAddrEntry                g_IPAddressTable[ ADDR_TAB_COUNT ];

IPSNMPInfo                 g_SnmpInfo;


NTSTATUS
TDIQtestOpen(
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp
    );

NTSTATUS
TDIQtestClose(
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp
    );

VOID
TDIQtestUnload(
    IN PDRIVER_OBJECT DriverObject
    );

VOID
DoQueryProviderInfoTest( void )
{
   NTSTATUS          Status;

   //
   // Query Tcp Provider Information
   //
   Status = KS_QueryProviderInfo(
               TCP_DEVICE_NAME_W,
               &g_TdiProviderInfo
               );

   if(NT_SUCCESS(Status))
   {
      DEBUG_DumpProviderInfo(
         TCP_DEVICE_NAME_W,
         &g_TdiProviderInfo
         );
   }

   //
   // Query Udp Provider Information
   //
   Status = KS_QueryProviderInfo(
               UDP_DEVICE_NAME_W,
               &g_TdiProviderInfo
               );

   if(NT_SUCCESS(Status))
   {
      DEBUG_DumpProviderInfo(
         UDP_DEVICE_NAME_W,
         &g_TdiProviderInfo
         );
   }

   //
   // Query An Example RawIp Provider Information
   //
   Status = KS_QueryProviderInfo(
               L"\\Device\\RawIp\\11",
               &g_TdiProviderInfo
               );

   if(NT_SUCCESS(Status))
   {
      DEBUG_DumpProviderInfo(
         L"\\Device\\RawIp\\11",
         &g_TdiProviderInfo
         );
   }

   //
   // Query AtalkDdp Provider Information
   //
   Status = KS_QueryProviderInfo(
               ATALK_DDP_DEVICE_NAME_W,
               &g_TdiProviderInfo
               );

   if(NT_SUCCESS(Status))
   {
      DEBUG_DumpProviderInfo(
         ATALK_DDP_DEVICE_NAME_W,
         &g_TdiProviderInfo
         );
   }

   //
   // Query AtalkAdsp Provider Information
   //
   Status = KS_QueryProviderInfo(
               ATALK_ADSP_DEVICE_NAME_W,
               &g_TdiProviderInfo
               );

   if(NT_SUCCESS(Status))
   {
      DEBUG_DumpProviderInfo(
         ATALK_ADSP_DEVICE_NAME_W,
         &g_TdiProviderInfo
         );
   }

   //
   // Query AtalkAspClient Provider Information
   //
   Status = KS_QueryProviderInfo(
               ATALK_ASP_CLIENT_DEVICE_NAME_W,
               &g_TdiProviderInfo
               );

   if(NT_SUCCESS(Status))
   {
      DEBUG_DumpProviderInfo(
         ATALK_ASP_CLIENT_DEVICE_NAME_W,
         &g_TdiProviderInfo
         );
   }

   //
   // Query AtalkAspServer Provider Information
   //
   Status = KS_QueryProviderInfo(
               ATALK_ASP_SERVER_DEVICE_NAME_W,
               &g_TdiProviderInfo
               );

   if(NT_SUCCESS(Status))
   {
      DEBUG_DumpProviderInfo(
         ATALK_ASP_SERVER_DEVICE_NAME_W,
         &g_TdiProviderInfo
         );
   }

   //
   // Query AtalkPap Provider Information
   //
   Status = KS_QueryProviderInfo(
               ATALK_PAP_DEVICE_NAME_W,
               &g_TdiProviderInfo
               );

   if(NT_SUCCESS(Status))
   {
      DEBUG_DumpProviderInfo(
         ATALK_PAP_DEVICE_NAME_W,
         &g_TdiProviderInfo
         );
   }

#ifdef ZNEVER
   //
   // Query PCAUSA-Specific Protocols
   //
   Status = KS_QueryProviderInfo(
               L"\\Device\\Nbf_PCASIMMP2",
               &g_TdiProviderInfo
               );

   if(NT_SUCCESS(Status))
   {
      DEBUG_DumpProviderInfo(
         L"\\Device\\Nbf_PCASIMMP2",
         &g_TdiProviderInfo
         );
   }

   Status = KS_QueryProviderInfo(
               L"\\Device\\NetBT_PCASIMMP2",
               &g_TdiProviderInfo
               );

   if(NT_SUCCESS(Status))
   {
      DEBUG_DumpProviderInfo(
         L"\\Device\\NetBT_PCASIMMP2",
         &g_TdiProviderInfo
         );
   }
#endif // ZNEVER
}


VOID
DoQueryProviderStatisticsTest( void )
{
   NTSTATUS          Status;

   //
   // Query Tcp Provider Statistics
   //
#ifdef DBG
   RtlFillMemory(
      &g_TdiProviderStatistics,
      sizeof( TDI_PROVIDER_STATISTICS ),
      0xFF
      );
#endif // DBG

   Status = KS_QueryProviderStatistics(
               TCP_DEVICE_NAME_W,
               &g_TdiProviderStatistics
               );

   if(NT_SUCCESS(Status))
   {
      DEBUG_DumpProviderStatistics(
         TCP_DEVICE_NAME_W,
         &g_TdiProviderStatistics
         );
   }

   //
   // Query Udp Provider Statistics
   //
#ifdef DBG
   RtlFillMemory(
      &g_TdiProviderStatistics,
      sizeof( TDI_PROVIDER_STATISTICS ),
      0xFF
      );
#endif // DBG

   Status = KS_QueryProviderStatistics(
               UDP_DEVICE_NAME_W,
               &g_TdiProviderStatistics
               );

   if(NT_SUCCESS(Status))
   {
      DEBUG_DumpProviderStatistics(
         UDP_DEVICE_NAME_W,
         &g_TdiProviderStatistics
         );
   }

   //
   // Query An Example RawIp Provider Statistics
   //
#ifdef DBG
   RtlFillMemory(
      &g_TdiProviderStatistics,
      sizeof( TDI_PROVIDER_STATISTICS ),
      0xFF
      );
#endif // DBG

   Status = KS_QueryProviderStatistics(
               L"\\Device\\RawIp\\11",
               &g_TdiProviderStatistics
               );

   if(NT_SUCCESS(Status))
   {
      DEBUG_DumpProviderStatistics(
         L"\\Device\\RawIp\\11",
         &g_TdiProviderStatistics
         );
   }

   //
   // Query AtalkDdp Provider Statistics
   //
#ifdef DBG
   RtlFillMemory(
      &g_TdiProviderStatistics,
      sizeof( TDI_PROVIDER_STATISTICS ),
      0xFF
      );
#endif // DBG

   Status = KS_QueryProviderStatistics(
               ATALK_DDP_DEVICE_NAME_W,
               &g_TdiProviderStatistics
               );

   if(NT_SUCCESS(Status))
   {
      DEBUG_DumpProviderStatistics(
         ATALK_DDP_DEVICE_NAME_W,
         &g_TdiProviderStatistics
         );
   }

   //
   // Query AtalkAdsp Provider Statistics
   //
#ifdef DBG
   RtlFillMemory(
      &g_TdiProviderStatistics,
      sizeof( TDI_PROVIDER_STATISTICS ),
      0xFF
      );
#endif // DBG

   Status = KS_QueryProviderStatistics(
               ATALK_ADSP_DEVICE_NAME_W,
               &g_TdiProviderStatistics
               );

   if(NT_SUCCESS(Status))
   {
      DEBUG_DumpProviderStatistics(
         ATALK_ADSP_DEVICE_NAME_W,
         &g_TdiProviderStatistics
         );
   }

   //
   // Query AtalkAspClient Provider Statistics
   //
#ifdef DBG
   RtlFillMemory(
      &g_TdiProviderStatistics,
      sizeof( TDI_PROVIDER_STATISTICS ),
      0xFF
      );
#endif // DBG

   Status = KS_QueryProviderStatistics(
               ATALK_ASP_CLIENT_DEVICE_NAME_W,
               &g_TdiProviderStatistics
               );

   if(NT_SUCCESS(Status))
   {
      DEBUG_DumpProviderStatistics(
         ATALK_ASP_CLIENT_DEVICE_NAME_W,
         &g_TdiProviderStatistics
         );
   }

   //
   // Query AtalkAspServer Provider Statistics
   //
#ifdef DBG
   RtlFillMemory(
      &g_TdiProviderStatistics,
      sizeof( TDI_PROVIDER_STATISTICS ),
      0xFF
      );
#endif // DBG

   Status = KS_QueryProviderStatistics(
               ATALK_ASP_SERVER_DEVICE_NAME_W,
               &g_TdiProviderStatistics
               );

   if(NT_SUCCESS(Status))
   {
      DEBUG_DumpProviderStatistics(
         ATALK_ASP_SERVER_DEVICE_NAME_W,
         &g_TdiProviderStatistics
         );
   }

   //
   // Query AtalkPap Provider Statistics
   //
#ifdef DBG
   RtlFillMemory(
      &g_TdiProviderStatistics,
      sizeof( TDI_PROVIDER_STATISTICS ),
      0xFF

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -