Condividi tramite


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

Vedi anche

Funzioni del buffer api

NetApiBufferFree

NetApiBufferReallocate

Funzioni di gestione di rete

Panoramica della gestione della rete