ReallocADsMem-Funktion (adshlp.h)
Mit der Funktion ReallocADsMem wird ein vorhandener Speicherblock neu zugeordnet und kopiert.
Syntax
LPVOID ReallocADsMem(
[in] LPVOID pOldMem,
[in] DWORD cbOld,
[in] DWORD cbNew
);
Parameter
[in] pOldMem
Typ: LPVOID
Zeiger auf den zu kopierenden Speicher. ReallocADsMem gibt diesen Speicher mit FreeADsMem frei, nachdem er kopiert wurde. Wenn kein zusätzlicher Arbeitsspeicher zugewiesen werden kann, wird dieser Arbeitsspeicher nicht freigegeben. Dieser Arbeitsspeicher muss mit der Funktion AllocADsMem, AllocADsStr, ReallocADsMem oder ReallocADsStr zugeordnet worden sein.
Der Aufrufer muss diesen Arbeitsspeicher freigeben, wenn er nicht mehr benötigt wird, indem er diesen Zeiger an FreeADsMem übergibt.
[in] cbOld
Art: DWORD
Größe des zu kopierenden Arbeitsspeichers in Bytes.
[in] cbNew
Art: DWORD
Größe des zu zuweisenden Arbeitsspeichers in Bytes.
Rückgabewert
Typ: LPVOID
Bei erfolgreicher Ausführung gibt die Funktion einen Zeiger auf den neuen zugeordneten Speicher zurück. Andernfalls wird NULL zurückgegeben.
Hinweise
Wenn cbNew kleiner als cbOld ist, wird der vorhandene Arbeitsspeicher abgeschnitten, um der neuen Speichergröße zu entsprechen.
Beispiele
Das folgende Codebeispiel zeigt, wie Sie ReallocADsMem verwenden, um eine Zeichenfolge zu vergrößern.
LPWSTR pwszPrefix = L"LDAP://"
DWORD dwOldSize = (lstrlenW(pwszPrefix) + 1) * sizeof(WCHAR);
LPWSTR pwszADsPath = (LPWSTR)AllocADsMem(dwOldSize);
if(pwszADsPath)
{
LPWSTR pwszDN = L"DC=fabrikam,DC=com";
wcsncpy_s(pwszADsPath, pwszPrefix); // Path becomes "LDAP://"
wprintf(L"path = %s\n", pwszADsPath);
DWORD dwNewSize = (lstrlenW(pwszPrefix) + lstrlenW(pwszDN) + 1) * sizeof(WCHAR);
/*
If successful, this will free the old path buffer, so it does not have to be
freed manually. But if it fails, the original memory still exists, so the
reallocated memory pointer is temporarily placed in another variable.
*/
LPWSTR pwszNewPath = (LPWSTR)ReallocADsMem(pwszADsPath, dwOldSize, dwNewSize);
if(pwszNewPath)
{
pwszADsPath = pwszNewPath;
// Path is still "LDAP://"
wcsncat_s(pwszADsPath, pwszDN);
// Path is "LDAP://DC=fabrikam,DC=com"
wprintf(L"path = %s\n", pwszADsPath);
}
else
{
wprintf(L"Unable to allocate additional memory.");
}
// Free remaining memory.
FreeADsMem(pwszADsPath);
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista |
Unterstützte Mindestversion (Server) | Windows Server 2008 |
Zielplattform | Windows |
Kopfzeile | adshlp.h |
Bibliothek | Activeds.lib |
DLL | Activeds.dll |