共用方式為


ReallocADsMem 函式 (adshlp.h)

ReallocADsMem 函式會重新配置並複製現有的記憶體區塊。

語法

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

參數

[in] pOldMem

類型: LPVOID

要複製的記憶體指標。 ReallocADsMem 會在複製記憶體之後,使用 FreeADsMem 釋放此記憶體。 如果無法配置額外的記憶體,則不會釋放此記憶體。 此記憶體必須已配置 AllocADsMemAllocADsStrReallocADsMemReallocADsStr 函式。

呼叫端必須將這個指標傳遞至 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
標頭 adshlp.h
程式庫 Activeds.lib
Dll Activeds.dll

另請參閱

ADSI 函式

AllocADsMem

AllocADsStr

FreeADsMem

ReallocADsMem