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

另请参阅

Api 缓冲区函数

NetApiBufferFree

NetApiBufferReallocate

网络管理功能

网络管理概述