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 |