#ifndef _NTSTRSAFE_H_INCLUDED_
#ifndef NTSTRSAFE_LIB_IMPL
#ifndef NTSTRSAFE_NO_CB_FUNCTIONS
NTSTRSAFEDDI
RtlStringCbCatNW(
_Inout_updates_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PWSTR pszDest,
_In_ size_t cbDest,
_In_reads_bytes_(cbToAppend) STRSAFE_PCNZWCH pszSrc,
_In_ size_t cbToAppend)
{
NTSTATUS status;
size_t cchDest = cbDest / sizeof(wchar_t);
size_t cchDestLength;
status = RtlStringValidateDestAndLengthW(pszDest,
cchDest,
&cchDestLength,
NTSTRSAFE_MAX_CCH);
if (NT_SUCCESS(status))
{
size_t cchToAppend = cbToAppend / sizeof(wchar_t);
if (cchToAppend > NTSTRSAFE_MAX_LENGTH)
{
status = STATUS_INVALID_PARAMETER;
}
else
{
status = RtlStringCopyWorkerW(pszDest + cchDestLength,
cchDest - cchDestLength,
NULL,
pszSrc,
cchToAppend);
}
}
return status;
}
View code on GitHub
No description available.