Función NetApiBufferAllocate (lmapibuf.h)
La función NetApiBufferAllocate asigna memoria del montón. Use esta función solo cuando se requiera compatibilidad con la función NetApiBufferFree . De lo contrario, use las funciones de administración de memoria.
Sintaxis
NET_API_STATUS NET_API_FUNCTION NetApiBufferAllocate(
[in] DWORD ByteCount,
[out] LPVOID *Buffer
);
Parámetros
[in] ByteCount
Número de bytes que se van a asignar.
[out] Buffer
Recibe un puntero al búfer asignado.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto se NERR_Success.
Si se produce un error en la función, el valor devuelto es un código de error del sistema. Para obtener una lista de códigos de error, consulte Códigos de error del sistema.
Comentarios
No se requiere ninguna pertenencia especial a grupos para ejecutar correctamente las funciones apiBuffer.
Para obtener más información, consulte Búferes de funciones de administración de red y longitudes de búfer de funciones de administración de red.
Ejemplos
En el ejemplo de código siguiente se muestra cómo usar las funciones ApiBuffer de administración de red.
En primer lugar, el ejemplo llama a la función NetApiBufferAllocate para asignar memoria y, a continuación, la función NetApiBufferSize para recuperar el tamaño de la memoria asignada. Después, el ejemplo llama a NetApiBufferReallocate para cambiar el tamaño de la asignación de memoria. Por último, el ejemplo llama a NetApiBufferFree para liberar la memoria. En cada caso, el ejemplo imprime un mensaje que indica éxito o error.
#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;
}
Requisitos
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | lmapibuf.h (include Lm.h) |
Library | Netapi32.lib |
Archivo DLL | Netapi32.dll |