リトリートおよびアドバンス操作
NDIS は、NET_BUFFER 構造体を操作するリトリート関数とアドバンス関数を提供します。 リトリート操作により、現在のドライバーで使用できるデータ領域が増えます。 アドバンス操作により、使用済みデータ領域が解放されます。
リトリート操作は、送信操作中、またはドライバーが受信データを下位ドライバーに返すときに必要です。 たとえば、送信操作中に、ドライバーは NdisRetreatNetBufferDataStart 関数を呼び出して、ヘッダー データ用のスペースを作成できます。
アドバンス操作は、送信操作が完了したとき、またはドライバーが下位ドライバーからデータを受信するときに必要です。 たとえば、受信操作中に、ドライバーは NdisAdvanceNetBufferDataStart 関数を呼び出して、下位レベルのドライバーで使用されたヘッダー データをスキップできます。 この場合、ヘッダー データは、未使用データ空間のバッファー内にとどまります。
次の図は、ネットワーク データとこれらの操作の関係を示しています。
次のトピックでは、アドバンス操作とリトリート操作の詳細について説明します。