Share via


ReallocADsMem 関数 (adshlp.h)

ReallocADsMem 関数は、既存のメモリ ブロックを再割り当てしてコピーします。

構文

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

パラメーター

[in] pOldMem

種類: LPVOID

コピーするメモリへのポインター。 ReallocADsMem は、コピー後に FreeADsMem を 使用してこのメモリを解放します。 追加のメモリを割り当てることができない場合、このメモリは解放されません。 このメモリは、 AllocADsMemAllocADsStrReallocADsMem、または ReallocADsStr 関数を使用して割り当てられている必要があります。

呼び出し元は、このポインターを FreeADsMem に渡すことで不要になったときに、このメモリを解放する必要があります。

[in] cbOld

型: DWORD

コピーするメモリのサイズ (バイト単位)。

[in] cbNew

型: DWORD

割り当てるメモリのサイズ (バイト単位)。

戻り値

種類: LPVOID

成功すると、関数は新しく割り当てられたメモリへのポインターを返します。 それ以外の場合は NULL を返します。

注釈

cbNewcbOld より小さい場合、既存のメモリは新しいメモリ サイズに合わせて切り捨てられます。

次のコード例は、 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
Library Activeds.lib
[DLL] Activeds.dll

こちらもご覧ください

ADSI 関数

AllocADsMem

AllocADsStr

FreeADsMem

ReallocADsMem