Bagikan melalui


Fungsi NetApiBufferAllocate (lmapibuf.h)

Fungsi NetApiBufferAllocate mengalokasikan memori dari heap. Gunakan fungsi ini hanya ketika kompatibilitas dengan fungsi NetApiBufferFree diperlukan. Jika tidak, gunakan fungsi manajemen memori.

Sintaks

NET_API_STATUS NET_API_FUNCTION NetApiBufferAllocate(
  [in]  DWORD  ByteCount,
  [out] LPVOID *Buffer
);

Parameter

[in] ByteCount

Jumlah byte yang akan dialokasikan.

[out] Buffer

Menerima penunjuk ke buffer yang dialokasikan.

Menampilkan nilai

Jika fungsi berhasil, nilai yang dikembalikan NERR_Success.

Jika fungsi gagal, nilai yang dikembalikan adalah kode kesalahan sistem. Untuk daftar kode kesalahan, lihat Kode Kesalahan Sistem.

Keterangan

Tidak ada keanggotaan grup khusus yang diperlukan untuk berhasil menjalankan fungsi ApiBuffer.

Untuk informasi selengkapnya, lihat Buffer Fungsi Manajemen Jaringan dan Panjang Buffer Fungsi Manajemen Jaringan.

Contoh

Sampel kode berikut menunjukkan cara menggunakan fungsi ApiBuffer manajemen jaringan.

Sampel pertama-tama memanggil fungsi NetApiBufferAllocate untuk mengalokasikan memori lalu fungsi NetApiBufferSize untuk mengambil ukuran memori yang dialokasikan. Setelah ini, sampel memanggil NetApiBufferReallocate untuk mengubah ukuran alokasi memori. Terakhir, sampel memanggil NetApiBufferFree untuk membebaskan memori. Dalam setiap kasus, sampel mencetak pesan yang menunjukkan keberhasilan atau kegagalan.

#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;
}

Persyaratan

   
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header lmapibuf.h (termasuk Lm.h)
Pustaka Netapi32.lib
DLL Netapi32.dll

Lihat juga

Fungsi Buffer Api

NetApiBufferFree

NetApiBufferReallocate

Fungsi Manajemen Jaringan

Gambaran Umum Manajemen Jaringan