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 |