Функция ReallocADsMem (adshlp.h)
Функция ReallocADsMem перераспределяет и копирует существующий блок памяти.
Синтаксис
LPVOID ReallocADsMem(
[in] LPVOID pOldMem,
[in] DWORD cbOld,
[in] DWORD cbNew
);
Параметры
[in] pOldMem
Тип: LPVOID
Указатель на копируемую память. ReallocADsMem освободит эту память с помощью FreeADsMem после ее копирования. Если не удается выделить дополнительную память, эта память не освобождается. Эта память должна быть выделена с помощью функции AllocADsMem, AllocADsStr, ReallocADsMem или ReallocADsStr .
Вызывающий объект должен освободить эту память, если она больше не требуется, передав этот указатель в FreeADsMem.
[in] cbOld
Тип: DWORD
Размер копируемой памяти в байтах.
[in] cbNew
Тип: DWORD
Размер выделенной памяти в байтах.
Возвращаемое значение
Тип: LPVOID
При успешном выполнении функция возвращает указатель на новую выделенную память. В противном случае возвращается значение NULL.
Комментарии
Если значение cbNew меньше cbOld, существующая память усекается в соответствии с новым размером памяти.
Примеры
В следующем примере кода показано, как использовать ReallocADsMem для увеличения строки.
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);
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista |
Минимальная версия сервера | Windows Server 2008 |
Целевая платформа | Windows |
Header | adshlp.h |
Библиотека | Activeds.lib |
DLL | Activeds.dll |