NetApiBufferAllocate 函数 (lmapibuf.h)
NetApiBufferAllocate 函数分配堆中的内存。 仅当需要与 NetApiBufferFree 函数兼容时,才使用此函数。 否则,请使用 内存管理功能。
语法
NET_API_STATUS NET_API_FUNCTION NetApiBufferAllocate(
[in] DWORD ByteCount,
[out] LPVOID *Buffer
);
parameters
[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) |
Library | Netapi32.lib |
DLL | Netapi32.dll |