共用方式為


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

另請參閱

Api 緩衝區函式

NetApiBufferFree

NetApiBufferReallocate

網路管理功能

網路管理概觀