Compartir a través de


Función ReallocADsMem (adshlp.h)

La función ReallocADsMem reasigna y copia un bloque de memoria existente.

Sintaxis

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

Parámetros

[in] pOldMem

Tipo: LPVOID

Puntero a la memoria que se va a copiar. ReallocADsMem liberará esta memoria con FreeADsMem después de haberla copiado. Si no se puede asignar memoria adicional, esta memoria no se libera. Esta memoria debe haberse asignado con la función AllocADsMem, AllocADsStr, ReallocADsMem o ReallocADsStr .

El autor de la llamada debe liberar esta memoria cuando ya no sea necesario pasando este puntero a FreeADsMem.

[in] cbOld

Tipo: DWORD

Tamaño, en bytes, de la memoria que se va a copiar.

[in] cbNew

Tipo: DWORD

Tamaño, en bytes, de la memoria que se va a asignar.

Valor devuelto

Tipo: LPVOID

Cuando se ejecuta correctamente, la función devuelve un puntero a la nueva memoria asignada. De lo contrario, devuelve NULL.

Comentarios

Si cbNew es menor que cbOld, la memoria existente se trunca para ajustarse al nuevo tamaño de memoria.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar ReallocADsMem para ampliar una cadena.

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 Value
Cliente mínimo compatible Windows Vista
Servidor mínimo compatible Windows Server 2008
Plataforma de destino Windows
Encabezado adshlp.h
Library Activeds.lib
Archivo DLL Activeds.dll

Consulte también

Funciones ADSI

AllocADsMem

AllocADsStr

FreeADsMem

ReallocADsMem