ReallocADsMem, fonction (adshlp.h)
La fonction ReallocADsMem réalloue et copie un bloc de mémoire existant.
Syntaxe
LPVOID ReallocADsMem(
[in] LPVOID pOldMem,
[in] DWORD cbOld,
[in] DWORD cbNew
);
Paramètres
[in] pOldMem
Type : LPVOID
Pointeur vers la mémoire à copier. ReallocADsMem libère cette mémoire avec FreeADsMem une fois qu’elle a été copiée. Si la mémoire supplémentaire ne peut pas être allouée, cette mémoire n’est pas libérée. Cette mémoire doit avoir été allouée avec la fonction AllocADsMem, AllocADsStr, ReallocADsMem ou ReallocADsStr .
L’appelant doit libérer cette mémoire quand elle n’est plus nécessaire en passant ce pointeur vers FreeADsMem.
[in] cbOld
Type : DWORD
Taille, en octets, de la mémoire à copier.
[in] cbNew
Type : DWORD
Taille, en octets, de la mémoire à allouer.
Valeur retournée
Type : LPVOID
En cas de réussite, la fonction retourne un pointeur vers la nouvelle mémoire allouée. Sinon, elle retourne NULL.
Remarques
Si cbNew est inférieur à cbOld, la mémoire existante est tronquée pour s’adapter à la nouvelle taille de mémoire.
Exemples
L’exemple de code suivant montre comment utiliser ReallocADsMem pour agrandir une chaîne.
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);
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows Vista |
Serveur minimal pris en charge | Windows Server 2008 |
Plateforme cible | Windows |
En-tête | adshlp.h |
Bibliothèque | Activeds.lib |
DLL | Activeds.dll |