Condividi tramite


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

Vedi anche

Funzioni ADSI

AllocADsMem

AllocADsStr

FreeADsMem

ReallocADsMem