處理緩衝資料
數個網路提供者函式會採用函式放置可變大小資料結構的緩衝區位址和大小。
在每個案例中,所使用的機制都相同。 呼叫端會配置緩衝區,並將其位址傳遞至 函式。 它也會傳遞 DWORD 的位址,以位元組為單位指定緩衝區的大小。
然後,函式會將所要求的資料結構複製到緩衝區中。 如果所有資料都符合緩衝區,函式會傳回WN_SUCCESS。 如果資料不符合緩衝區,資料可能會保持不完整,而且函式會設定WN_MORE_DATA錯誤。 在任一情況下,指出緩衝區大小的 DWORD 會設定為資料結構實際需要的位元組數目。 如此一來,如果傳入的緩衝區太小且函式失敗,則呼叫端可能會配置所需大小的新緩衝區,並再次呼叫函式。
傳回的資料結構包含可變長度字串時,個別的資料結構通常會包含這些字串的指標。 字串本身也應該放在緩衝區內。 不過,請務必將它們放在緩衝區的結尾。 否則,它們會將索引編制至第 N 個結構不可能。 換句話說,所有結構都會連續地位於緩衝區的開頭。 字串或可變長度資料的指標必須是實際指標,而不是位移至緩衝區。
當緩衝區用來傳入並傳回只包含字串的資料時,指定緩衝區大小的 DWORD 應該設定為符合這些字串的字元總數,而不是位元組數目。