/* * PROJECT: Filesystem Filter Manager * LICENSE: GPL - See COPYING in the top level directory * FILE: drivers/filters/fltmgr/Lib.c * PURPOSE: Miscellaneous library functions * PROGRAMMERS: Ged Murphy (gedmurphy@reactos.org) */ /* INCLUDES ******************************************************************/ #include "fltmgr.h" #define NDEBUG #include /* DATA *********************************************************************/ /* FUNCTIONS **********************************************/ VOID FltpFreeUnicodeString(_In_ PUNICODE_STRING String) { /* Free up any existing buffer */ if (String->Buffer) { ExFreePoolWithTag(String->Buffer, FM_TAG_UNICODE_STRING); } /* Empty the string */ String->Buffer = NULL; String->Length = 0; String->MaximumLength = 0; } NTSTATUS FltpReallocateUnicodeString(_In_ PUNICODE_STRING String, _In_ SIZE_T NewLength, _In_ BOOLEAN CopyExisting) { PWCH NewBuffer; /* Don't bother reallocating if the buffer is smaller */ if (NewLength <= String->MaximumLength) { String->Length = 0; return STATUS_SUCCESS; } /* Allocate a new buffer at the size requested */ NewBuffer = ExAllocatePoolWithTag(PagedPool, NewLength, FM_TAG_UNICODE_STRING); if (NewBuffer == NULL) return STATUS_INSUFFICIENT_RESOURCES; if (CopyExisting) { /* Copy the old data across */ RtlCopyMemory(NewBuffer, String->Buffer, String->Length); } else { /* Reset the length */ String->Length = 0; } /* Free any old buffer */ if (String->Buffer) ExFreePoolWithTag(String->Buffer, FM_TAG_UNICODE_STRING); /* Update the lengths */ String->Buffer = NewBuffer; String->MaximumLength = NewLength; return STATUS_SUCCESS; } NTSTATUS FltpCopyUnicodeString(_In_ PUNICODE_STRING StringOne, _In_ PUNICODE_STRING StringTwo) { return 0; }