Porting TDI Drivers to Winsock Kernel
To port your TDI driver to Winsock Kernel (WSK), you'll need to convert TDI tasks to their WSK equivalents as shown in the following table.
Tasks | TDI | Winsock Kernel (WSK) |
---|---|---|
Register and Deregister | N/A | WskRegister and WskDeregister |
Capture and Release Provider NPI | N/A | WskCaptureProviderNPI and WskReleaseProviderNPI |
Create Address File Object | Create EaBuffer, then call ZwCreateFile | No longer necessary. See WskSocket. |
Create Connection File Object | Create connection EaBuffer, then call ZwCreateFile | No longer necessary. See WskSocket and WskAcceptEvent. |
Associate Address | TDI_ASSOCIATE_ADDRESS | WskBind |
Set Event Handlers | TDI_SET_EVENT_HANDLER | WskControlSocket or static variation using WskControlClient |
Clear Event Handlers | TDI_SET_EVENT_HANDLER | WskControlSocket |
Connect | TDI_CONNECT | WskConnect |
Disconnect | TDI_DISCONNECT | WskDisconnect |
Send | TDI_SEND | WskSend |
Receive | TDI_RECEIVE | WskReceive |
Disassociate Address | TDI_DISASSOCIATE_ADDRESS | N/A |
Receive Handler | ClientEventReceive, TDI_RECEIVE | WskReceiveEvent |
Connect Handler | ClientEventConnect, TDI_CONNECT | WskAccept |
Close Socket or Connection | ObDereferenceObject or ZwClose | WskCloseSocket |
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for