Zpracování dat uložených ve vyrovnávací paměti
Několik funkcí poskytovatele sítě přijímá adresu a velikost vyrovnávací paměti, do které funkce umístí datovou strukturu s proměnlivou velikostí.
V každém případě je použitý mechanismus stejný. Volající přidělí paměťový buffer a předá funkci jeho adresu. Předává také adresu DWORD, která určuje velikost vyrovnávací paměti v bajtech.
Funkce pak zkopíruje co nejvíce z požadované datové struktury do vyrovnávací paměti. Pokud se všechna data vejdou do vyrovnávací paměti, vrátí funkce WN_SUCCESS. Pokud se data nevejdou do vyrovnávací paměti, mohou zůstat neúplná a funkce nastaví chybu WN_MORE_DATA. V obou případech je DWORD , který označuje velikost vyrovnávací paměti, nastaven na počet bajtů, které datová struktura skutečně vyžaduje. To znamená, že pokud byla předaná vyrovnávací paměť příliš malá a funkce selhala, volající může přidělit novou vyrovnávací paměť požadované velikosti a znovu volat funkci.
Když vrácené datové struktury obsahují řetězce s proměnnou délkou, jednotlivé datové struktury obvykle obsahují ukazatele na tyto řetězce. Samotné řetězce by se také měly umístit do vyrovnávací paměti. Je však důležité je umístit na konec vyrovnávací paměti. Jinak znemožní indexování do n-té struktury. Jinými slovy, všechny struktury jsou umístěny souvisle na začátku vyrovnávací paměti. Ukazatele na řetězce nebo na data proměnné délky musí být skutečnými ukazateli, nikoli offsety do vyrovnávací paměti.
Pokud se vyrovnávací paměť používá k předávání a vracení dat, která se skládají pouze z řetězců, DWORD určení velikosti vyrovnávací paměti by mělo být nastaveno na celkový počet znaků, které se do těchto řetězců vejdou, ne na počet bajtů.