Freigeben über


NetApiBufferAllocate-Funktion (lmapibuf.h)

Die NetApiBufferAllocate-Funktion weist Arbeitsspeicher aus dem Heap zu. Verwenden Sie diese Funktion nur, wenn Kompatibilität mit der NetApiBufferFree-Funktion erforderlich ist. Andernfalls verwenden Sie die Speicherverwaltungsfunktionen.

Syntax

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

Parameter

[in] ByteCount

Anzahl der zu zuweisenden Bytes.

[out] Buffer

Empfängt einen Zeiger auf den zugeordneten Puffer.

Rückgabewert

Wenn die Funktion erfolgreich ist, wird der Rückgabewert NERR_Success.

Wenn die Funktion fehlschlägt, ist der Rückgabewert ein Systemfehlercode. Eine Liste der Fehlercodes finden Sie unter Systemfehlercodes.

Hinweise

Für die erfolgreiche Ausführung der ApiBuffer-Funktionen ist keine spezielle Gruppenmitgliedschaft erforderlich.

Weitere Informationen finden Sie unter Netzwerkverwaltungsfunktionspuffer und Netzwerkverwaltungsfunktionspufferlängen.

Beispiele

Im folgenden Codebeispiel wird die Verwendung der ApiBuffer-Funktionen für die Netzwerkverwaltung veranschaulicht.

Im Beispiel wird zuerst die NetApiBufferAllocate-Funktion aufgerufen, um Arbeitsspeicher zuzuweisen, und dann die NetApiBufferSize-Funktion , um die Größe des zugewiesenen Arbeitsspeichers abzurufen. Anschließend ruft das Beispiel NetApiBufferReallocate auf , um die Größe der Speicherzuordnung zu ändern. Schließlich ruft das Beispiel NetApiBufferFree auf, um den Arbeitsspeicher freizugeben. In jedem Fall gibt das Beispiel eine Meldung aus, die auf Erfolg oder Fehler hinweist.

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

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile lmapibuf.h (include Lm.h)
Bibliothek Netapi32.lib
DLL Netapi32.dll

Weitere Informationen

Api-Pufferfunktionen

NetApiBufferFree

NetApiBufferReallocate

Netzwerkverwaltungsfunktionen

Übersicht über die Netzwerkverwaltung