#ifndef _NTSTRSAFE_H_INCLUDED_
NTSTRSAFEWORKERDDI
RtlStringCopyWorkerA(
_Out_writes_(cchDest) _Always_(_Post_z_) NTSTRSAFE_PSTR pszDest,
_In_ _In_range_(1, NTSTRSAFE_MAX_CCH) size_t cchDest,
_Always_(_Out_opt_ _Deref_out_range_(<=, (cchToCopy < cchDest) ? cchToCopy : (cchDest - 1))) size_t* pcchNewDestLength,
_In_reads_or_z_(cchToCopy) STRSAFE_PCNZCH pszSrc,
_In_ _In_range_(<, NTSTRSAFE_MAX_CCH) size_t cchToCopy);
View code on GitHub
#ifndef _NTSTRSAFE_H_INCLUDED_
// Below here are the worker functions that actually do the work
#if defined(NTSTRSAFE_LIB_IMPL) || !defined(NTSTRSAFE_LIB)
NTSTRSAFEWORKERDDI
RtlStringCopyWorkerA(
_Out_writes_(cchDest) _Always_(_Post_z_) NTSTRSAFE_PSTR pszDest,
_In_ _In_range_(1, NTSTRSAFE_MAX_CCH) size_t cchDest,
_Always_(_Out_opt_ _Deref_out_range_(<=, (cchToCopy < cchDest) ? cchToCopy : (cchDest - 1))) size_t* pcchNewDestLength,
_In_reads_or_z_(cchToCopy) STRSAFE_PCNZCH pszSrc,
_In_ _In_range_(<, NTSTRSAFE_MAX_CCH) size_t cchToCopy)
{
NTSTATUS status = STATUS_SUCCESS;
size_t cchNewDestLength = 0;
// ASSERT(cchDest != 0);
while (cchDest && cchToCopy && (*pszSrc != '\0'))
{
*pszDest++ = *pszSrc++;
cchDest--;
cchToCopy--;
cchNewDestLength++;
}
if (cchDest == 0)
{
// we are going to truncate pszDest
pszDest--;
cchNewDestLength--;
status = STATUS_BUFFER_OVERFLOW;
}
*pszDest = '\0';
if (pcchNewDestLength)
{
*pcchNewDestLength = cchNewDestLength;
}
return status;
}
View code on GitHub
#ifndef _NTSTRSAFE_H_INCLUDED_
// Do not call these functions, they are worker functions for internal use within this file
#ifdef DEPRECATE_SUPPORTED
// ...
#else
#define RtlStringCopyWorkerA RtlStringCopyWorkerA_instead_use_StringCchCopyA_or_StringCbCopyA
View code on GitHub
No description available.