Funzione ReallocADsMem (adshlp.h)
La funzione ReallocADsMem rialloca e copia un blocco di memoria esistente.
Sintassi
LPVOID ReallocADsMem(
[in] LPVOID pOldMem,
[in] DWORD cbOld,
[in] DWORD cbNew
);
Parametri
[in] pOldMem
Tipo: LPVOID
Puntatore alla memoria da copiare. ReallocADsMem libera questa memoria con FreeADsMem dopo la copia. Se non è possibile allocare memoria aggiuntiva, questa memoria non viene liberata. Questa memoria deve essere stata allocata con la funzione AllocADsMem, AllocADsStr, ReallocADsMem o ReallocADsStr .
Il chiamante deve liberare questa memoria quando non è più necessaria passando questo puntatore a FreeADsMem.
[in] cbOld
Tipo: DWORD
Dimensioni, in byte, della memoria da copiare.
[in] cbNew
Tipo: DWORD
Dimensioni, in byte, della memoria da allocare.
Valore restituito
Tipo: LPVOID
In caso di esito positivo, la funzione restituisce un puntatore alla nuova memoria allocata. In caso contrario, restituisce NULL.
Commenti
Se cbNew è minore di cbOld, la memoria esistente viene troncata per adattarsi alle nuove dimensioni della memoria.
Esempio
Nell'esempio di codice seguente viene illustrato come usare ReallocADsMem per ingrandire una stringa.
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);
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista |
Server minimo supportato | Windows Server 2008 |
Piattaforma di destinazione | Windows |
Intestazione | adshlp.h |
Libreria | Activeds.lib |
DLL | Activeds.dll |