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 |