/*++

Copyright (c) Microsoft Corporation

Module Name:

    FxString.cpp

Abstract:

    This module implements a simple string class to operate on
    unicode strings.

Author:



Environment:

    Both kernel and user mode

Revision History:

--*/

#include "fxsupportpch.hpp"

FxString::FxString(
    __in PFX_DRIVER_GLOBALS FxDriverGlobals
    ) :
    FxObject(FX_TYPE_STRING, sizeof(FxString), FxDriverGlobals)
{
    RtlInitUnicodeString(&m_UnicodeString, NULL);
    MarkPassiveDispose(ObjectDoNotLock);
}

FxString::~FxString()
{
    if (m_UnicodeString.Buffer) {
        FxPoolFree(m_UnicodeString.Buffer);
    }
}

_Must_inspect_result_
NTSTATUS
FxString::Assign(
    __in const UNICODE_STRING* UnicodeString
    )
{
    return FxDuplicateUnicodeString(GetDriverGlobals(),
                                    UnicodeString,
                                    &m_UnicodeString);
}

_Must_inspect_result_
NTSTATUS
FxString::Assign(
    __in PCWSTR SourceString
    )

{
    UNICODE_STRING string;

    RtlInitUnicodeString(&string, SourceString);

    return Assign(&string);
}