Windows内核模式下套接字结构

        Windows应用层的网络通讯使用socket非常常见。内核模式下呢?一种是可以使用TDI或者NDIS驱动程序,但是TDI驱动程序在Win7系统以后就无法使用,而NDIS驱动学习成本比较高,编程的难度比较高。如果是简单的实现网络通讯比如TCP或者是UDP通讯,更加推荐使用内核模式下WSK的socket。

        这个socket结构如下: 

typedef struct _WSK_SOCKET {
  const VOID *Dispatch;
} WSK_SOCKET, *PWSK_SOCKET;

         这个套接字只包含一个指针,指向一个结构体,结构体里面包含不同类型的socket的分发函数,比如Send,Receive函数等。

         TCP使用这个类型的套接字。

Connection-oriented socket

WSK_PROVIDER_CONNECTION_DISPATCH

           该类型的套接字的的函数指针包含如下。在使用过程中,通过Dispatch指针调用里面的函数即可实现内核模式下的TCP通讯,包括接收数据和发送数据。调用的流程和Windows应用程序的接口是完全类似的,函数名也很容易对应上。这里就不多啰嗦了。
typedef struct _WSK_PROVIDER_CONNECTION_DISPATCH {
  WSK_PROVIDER_BASIC_DISPATCH          Basic;
  PFN_WSK_BIND                         WskBind;
  PFN_WSK_CONNECT                      WskConnect;
  PFN_WSK_GET_LOCAL_ADDRESS            WskGetLocalAddress;
  PFN_WSK_GET_REMOTE_ADDRESS           WskGetRemoteAddress;
  PFN_WSK_SEND                         WskSend;
  PFN_WSK_RECEIVE                      WskReceive;
  PFN_WSK_DISCONNECT                   WskDisconnect;
  PFN_WSK_RELEASE_DATA_INDICATION_LIST WskRelease;
} WSK_PROVIDER_CONNECTION_DISPATCH, *PWSK_PROVIDER_CONNECTION_DISPATCH;

你可能感兴趣的:(windows,内核,结构,WSK)