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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章