Partager via


NetApiBufferAllocate, fonction (lmapibuf.h)

La fonction NetApiBufferAllocate alloue la mémoire du tas. Utilisez cette fonction uniquement lorsque la compatibilité avec la fonction NetApiBufferFree est requise. Sinon, utilisez les fonctions de gestion de la mémoire.

Syntaxe

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

Paramètres

[in] ByteCount

Nombre d’octets à allouer.

[out] Buffer

Reçoit un pointeur vers la mémoire tampon allouée.

Valeur retournée

Si la fonction réussit, la valeur de retour est NERR_Success.

Si la fonction échoue, la valeur de retour est un code d’erreur système. Pour obtenir la liste des codes d’erreur, consultez Codes d’erreur système.

Notes

Aucune appartenance à un groupe spécial n’est requise pour exécuter correctement les fonctions ApiBuffer.

Pour plus d’informations, consultez Mémoires tampons de fonction de gestionréseau et Longueurs de mémoire tampon des fonctions de gestion réseau.

Exemples

L’exemple de code suivant montre comment utiliser les fonctions ApiBuffer de gestion réseau.

L’exemple appelle d’abord la fonction NetApiBufferAllocate pour allouer de la mémoire, puis la fonction NetApiBufferSize pour récupérer la taille de la mémoire allouée. Ensuite, l’exemple appelle NetApiBufferReallocate pour modifier la taille de l’allocation de mémoire. Enfin, l’exemple appelle NetApiBufferFree pour libérer la mémoire. Dans chaque cas, l’exemple imprime un message indiquant la réussite ou l’échec.

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

Configuration requise

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête lmapibuf.h (include Lm.h)
Bibliothèque Netapi32.lib
DLL Netapi32.dll

Voir aussi

Fonctions de mémoire tampon d’API

NetApiBufferFree

NetApiBufferReallocate

Fonctions de gestion réseau

Vue d’ensemble de la gestion du réseau