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 |