Partager via


ReallocADsMem, fonction (adshlp.h)

La fonction ReallocADsMem réalloue et copie un bloc de mémoire existant.

Syntaxe

LPVOID ReallocADsMem(
  [in] LPVOID pOldMem,
  [in] DWORD  cbOld,
  [in] DWORD  cbNew
);

Paramètres

[in] pOldMem

Type : LPVOID

Pointeur vers la mémoire à copier. ReallocADsMem libère cette mémoire avec FreeADsMem une fois qu’elle a été copiée. Si la mémoire supplémentaire ne peut pas être allouée, cette mémoire n’est pas libérée. Cette mémoire doit avoir été allouée avec la fonction AllocADsMem, AllocADsStr, ReallocADsMem ou ReallocADsStr .

L’appelant doit libérer cette mémoire quand elle n’est plus nécessaire en passant ce pointeur vers FreeADsMem.

[in] cbOld

Type : DWORD

Taille, en octets, de la mémoire à copier.

[in] cbNew

Type : DWORD

Taille, en octets, de la mémoire à allouer.

Valeur retournée

Type : LPVOID

En cas de réussite, la fonction retourne un pointeur vers la nouvelle mémoire allouée. Sinon, elle retourne NULL.

Remarques

Si cbNew est inférieur à cbOld, la mémoire existante est tronquée pour s’adapter à la nouvelle taille de mémoire.

Exemples

L’exemple de code suivant montre comment utiliser ReallocADsMem pour agrandir une chaîne.

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

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
Serveur minimal pris en charge Windows Server 2008
Plateforme cible Windows
En-tête adshlp.h
Bibliothèque Activeds.lib
DLL Activeds.dll

Voir aussi

Fonctions ADSI

AllocADsMem

AllocADsStr

FreeADsMem

ReallocADsMem