Difference between revisions of "Afd.sys"

From ReactOS Wiki
Jump to: navigation, search
(Minor formatting)
(Mark outdated)
Line 1: Line 1:
AFD Structure:
+
{{outdated}}
  
It was complicated before. Here's how it works now:
+
It was complicated before. Here's how it works now:
  
Each AFD_FCB has a read and write buffer which currently holds up to one packet. For better performance, we can make this buffering scheme better. For the sake of simplicity, it's the way it is now.
+
Each AFD_FCB has a read and write buffer which currently holds up to one packet. For better performance, we can make this buffering scheme better. For the sake of simplicity, it's the way it is now.
  
Each socket can have at most one send irp active at a time. Others either wait or do nothing depending on whether they're for stream or packet sockets. This too can be improved but again does no real harm.   
+
Each socket can have at most one send IRP active at a time. Others either wait or do nothing depending on whether they're for stream or packet sockets. This too can be improved but again does no real harm.   
  
Each socket has at most one receive irp active at a time (or listen irp for a listen socket). The TDI provider completes the irp when some data arrives, and we relaunch it when our buffer is empty.
+
Each socket has at most one receive IRP active at a time (or listen IRP for a listen socket). The TDI provider completes the irp when some data arrives, and we relaunch it when our buffer is empty.
  
Select is accomplished by calls to PollReeval in ReceiveComplete, SendComplete, Afd*ReadData and Afd*WriteData. Each time PollReeval is called, a select irp could get completed.
+
Select is accomplished by calls to PollReeval in ReceiveComplete, SendComplete, Afd*ReadData and Afd*WriteData. Each time PollReeval is called, a select IRP could get completed.
  
 
Apart from that the rest is bookkeeping.
 
Apart from that the rest is bookkeeping.

Revision as of 23:02, 6 September 2010

This page is probably outdated

The information on this page might not be valid for the current state of ReactOS.
A Wiki Administrator should look at this page and decide or discuss what to do with it.


It was complicated before. Here's how it works now:

Each AFD_FCB has a read and write buffer which currently holds up to one packet. For better performance, we can make this buffering scheme better. For the sake of simplicity, it's the way it is now.

Each socket can have at most one send IRP active at a time. Others either wait or do nothing depending on whether they're for stream or packet sockets. This too can be improved but again does no real harm.

Each socket has at most one receive IRP active at a time (or listen IRP for a listen socket). The TDI provider completes the irp when some data arrives, and we relaunch it when our buffer is empty.

Select is accomplished by calls to PollReeval in ReceiveComplete, SendComplete, Afd*ReadData and Afd*WriteData. Each time PollReeval is called, a select IRP could get completed.

Apart from that the rest is bookkeeping.