Compartilhar via


Função ReallocADsMem (adshlp.h)

A função ReallocADsMem realoca e copia um bloco de memória existente.

Sintaxe

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

Parâmetros

[in] pOldMem

Tipo: LPVOID

Ponteiro para a memória a ser copiada. O ReallocADsMem liberará essa memória com FreeADsMem depois que ela for copiada. Se não for possível alocar memória adicional, essa memória não será liberada. Essa memória deve ter sido alocada com a função AllocADsMem, AllocADsStr, ReallocADsMem ou ReallocADsStr .

O chamador deve liberar essa memória quando ela não for mais necessária passando esse ponteiro para FreeADsMem.

[in] cbOld

Tipo: DWORD

Tamanho, em bytes, da memória a ser copiada.

[in] cbNew

Tipo: DWORD

Tamanho, em bytes, da memória a ser alocada.

Retornar valor

Tipo: LPVOID

Quando bem-sucedida, a função retorna um ponteiro para a nova memória alocada. Caso contrário, retornará NULL.

Comentários

Se cbNew for menor que cbOld, a memória existente será truncada para se ajustar ao novo tamanho de memória.

Exemplos

O exemplo de código a seguir mostra como usar ReallocADsMem para ampliar uma cadeia de caracteres.

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

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista
Servidor mínimo com suporte Windows Server 2008
Plataforma de Destino Windows
Cabeçalho adshlp.h
Biblioteca Activeds.lib
DLL Activeds.dll

Confira também

Funções ADSI

AllocADsMem

AllocADsStr

FreeADsMem

ReallocADsMem