Bagikan melalui


Fungsi ReallocADsMem (adshlp.h)

Fungsi ReallocADsMem merealokasi dan menyalin blok memori yang ada.

Sintaks

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

Parameter

[in] pOldMem

Jenis: LPVOID

Arahkan ke memori untuk disalin. ReallocADsMem akan membebaskan memori ini dengan FreeADsMem setelah disalin. Jika memori tambahan tidak dapat dialokasikan, memori ini tidak dikosongkan. Memori ini harus dialokasikan dengan fungsi AllocADsMem, AllocADsStr, ReallocADsMem, atau ReallocADsStr .

Pemanggil harus membebaskan memori ini ketika tidak lagi diperlukan dengan meneruskan pointer ini ke FreeADsMem.

[in] cbOld

Jenis: DWORD

Ukuran, dalam byte, memori yang akan disalin.

[in] cbNew

Jenis: DWORD

Ukuran, dalam byte, dari memori yang akan dialokasikan.

Mengembalikan nilai

Jenis: LPVOID

Jika berhasil, fungsi mengembalikan penunjuk ke memori baru yang dialokasikan. Jika tidak, null akan dikembalikan.

Keterangan

Jika cbNew kurang dari cbOld, memori yang ada dipotong agar sesuai dengan ukuran memori baru.

Contoh

Contoh kode berikut menunjukkan cara menggunakan ReallocADsMem untuk memperbesar string.

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);
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista
Server minimum yang didukung Windows Server 2008
Target Platform Windows
Header adshlp.h
Pustaka Activeds.lib
DLL Activeds.dll

Lihat juga

Fungsi ADSI

AllocADsMem

AllocADsStr

FreeADsMem

ReallocADsMem