다음을 통해 공유


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을 반환합니다.

설명

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
라이브러리 Activeds.lib
DLL Activeds.dll

추가 정보

ADSI 함수

AllocADsMem

AllocADsStr

FreeADsMem

ReallocADsMem