NetApiBufferAllocate 函式 (lmapibuf.h)
NetApiBufferAllocate 函式會從堆積配置記憶體。 只有在需要 NetApiBufferFree 函式的相容性時,才使用此函式。 否則,請使用 記憶體管理功能。
語法
NET_API_STATUS NET_API_FUNCTION NetApiBufferAllocate(
[in] DWORD ByteCount,
[out] LPVOID *Buffer
);
參數
[in] ByteCount
要配置的位元組數目。
[out] Buffer
接收已配置緩衝區的指標。
傳回值
如果函式成功,傳回值會NERR_Success。
如果函式失敗,則傳回值是系統錯誤碼。 如需錯誤碼的清單,請參閱 系統錯誤碼。
備註
成功執行 ApiBuffer 函式不需要特殊群組成員資格。
如需詳細資訊,請參閱 網路管理功能緩衝區 和 網路管理函式緩衝區長度。
範例
下列程式碼範例示範如何使用網路管理 ApiBuffer 函式。
此範例會先呼叫 NetApiBufferAllocate 函式來配置記憶體,然後呼叫 NetApiBufferSize 函式來擷取已配置記憶體的大小。 在此之後,此範例會呼叫 NetApiBufferReallocate 來變更記憶體配置的大小。 最後,此範例會呼叫 NetApiBufferFree 以釋放記憶體。 在每個案例中,範例都會列印一則訊息,指出成功或失敗。
#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <lm.h>
#include <stdio.h>
#pragma comment(lib, "netapi32.lib")
void PrintError(LPSTR lpszApi, DWORD res);
int main()
{
PUSER_INFO_10 p;
DWORD res, dwSize;
// Call the NetApiBufferAllocate function
// to allocate the memory. If successful,
// print a message.
//
res = NetApiBufferAllocate(1024, (LPVOID *) &p);
if(res == NERR_Success)
{
printf("NetApiBufferAllocate: Allocated 1024 bytes.\n");
// Call the NetApiBufferSize function
// to retrieve the size of the allocated buffer.
// If successful, print the size.
//
res = NetApiBufferSize(p, &dwSize);
if(res == NERR_Success)
{
printf("NetApiBufferSize: Buffer has %u bytes.\n", dwSize);
// Call the NetApiBufferReallocate function
// to change the size of the allocated memory.
// If successful, print the new size of the buffer.
//
res = NetApiBufferReallocate(p, dwSize * 2, (LPVOID *) &p);
if(res == NERR_Success)
printf("NetApiBufferReallocate: Re-Allocated %u bytes.\n", dwSize * 2);
else
PrintError("NetApiBufferReallocate", res);
// Call the NetApiBufferFree function
// to free the allocated memory.
// If successful, print a message.
//
res = NetApiBufferFree(p);
if(res == NERR_Success)
printf("Freed Buffer\n");
else
PrintError("NetApiBufferFree", res);
}
else
PrintError("NetApiBufferSize", res);
}
else
PrintError("NetApiBufferAllocate", res);
return 0;
}
void PrintError(LPSTR lpszApi, DWORD res)
{
printf("%s: Error %u\n", lpszApi, res);
return;
}
需求
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | lmapibuf.h (包含 Lm.h) |
程式庫 | Netapi32.lib |
Dll | Netapi32.dll |