Funzione NetApiBufferAllocate (lmapibuf.h)
La funzione NetApiBufferAllocate alloca memoria dall'heap. Usare questa funzione solo quando è necessaria la compatibilità con la funzione NetApiBufferFree . In caso contrario, usare le funzioni di gestione della memoria.
Sintassi
NET_API_STATUS NET_API_FUNCTION NetApiBufferAllocate(
[in] DWORD ByteCount,
[out] LPVOID *Buffer
);
Parametri
[in] ByteCount
Numero di byte da allocare.
[out] Buffer
Riceve un puntatore al buffer allocato.
Valore restituito
Se la funzione ha esito positivo, il valore restituito viene NERR_Success.
Se la funzione ha esito negativo, il valore restituito è un codice di errore di sistema. Per un elenco dei codici di errore, vedere Codici errore di sistema.
Commenti
Non è necessaria alcuna appartenenza a gruppi speciali per eseguire correttamente le funzioni ApiBuffer.
Per altre informazioni, vedere Buffer delle funzioni di gestione di rete e lunghezze del buffer delle funzioni di gestione di rete.
Esempio
L'esempio di codice seguente illustra come usare le funzioni ApiBuffer di gestione di rete.
L'esempio chiama prima la funzione NetApiBufferAllocate per allocare memoria e quindi la funzione NetApiBufferSize per recuperare le dimensioni della memoria allocata. A questo scopo, l'esempio chiama NetApiBufferReallocate per modificare le dimensioni dell'allocazione di memoria. Infine, l'esempio chiama NetApiBufferFree per liberare la memoria. In ogni caso, l'esempio stampa un messaggio che indica l'esito positivo o negativo.
#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;
}
Requisiti
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | lmapibuf.h (include Lm.h) |
Libreria | Netapi32.lib |
DLL | Netapi32.dll |