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

Consulte también

Funciones de búfer de API

NetApiBufferFree

NetApiBufferReallocate

Funciones de administración de red

Introducción a la administración de redes