summaryrefslogtreecommitdiff
path: root/audio/Acx/Samples/Common/NewDelete.cpp
diff options
context:
space:
mode:
authorJulia D'Zmura <[email protected]>2023-03-07 11:32:48 -0800
committerGitHub <[email protected]>2023-03-07 11:32:48 -0800
commit7d5c202eddde517fe5546452d83c36cf42381f8a (patch)
treeb4b0e8ce2b5efb2a06f2a981fccc3518e02edb47 /audio/Acx/Samples/Common/NewDelete.cpp
parente802b80eaf6b0e949b6fbcecac633da37a71ced7 (diff)
Adding the AudioCodec ACX sample driver to Github. (#882)
* Adding the AudioCodec acx sample driver to Github. * Fix to make AudioCodec driver all build in one solution file. Builds in ARM64 now.
Diffstat (limited to 'audio/Acx/Samples/Common/NewDelete.cpp')
-rw-r--r--audio/Acx/Samples/Common/NewDelete.cpp91
1 files changed, 91 insertions, 0 deletions
diff --git a/audio/Acx/Samples/Common/NewDelete.cpp b/audio/Acx/Samples/Common/NewDelete.cpp
new file mode 100644
index 00000000..583d36c5
--- /dev/null
+++ b/audio/Acx/Samples/Common/NewDelete.cpp
@@ -0,0 +1,91 @@
+/*++
+ THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
+ KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
+ PURPOSE.
+Module Name:
+ newdelete.cpp
+Abstract:
+ Contains overloaded placement new and delete operators
+Environment:
+ Kernel mode
+--*/
+
+#include "private.h"
+#include "NewDelete.h"
+
+/*****************************************************************************
+ * ::new(POOL_FLAGS)
+ *****************************************************************************
+ * New function for creating objects with a specified pool flags.
+ */
+PVOID operator new(
+ _In_ size_t size,
+ _In_ POOL_FLAGS poolFlags
+)
+{
+ PVOID result = ExAllocatePool2(poolFlags, size, 'wNwS');
+
+ return result;
+}
+
+/*****************************************************************************
+ * ::new(POOL_FLAGS, TAG)
+ *****************************************************************************
+ * New function for creating objects with specified pool flags and allocation tag.
+ */
+PVOID operator new(
+ _In_ size_t size,
+ _In_ POOL_FLAGS poolFlags,
+ _In_ ULONG tag
+)
+{
+ PVOID result = ExAllocatePool2(poolFlags, size, tag);
+
+ return result;
+}
+
+void __cdecl operator delete(PVOID buffer)
+{
+ if (buffer)
+ {
+ ExFreePool(buffer);
+ }
+}
+
+void __cdecl operator delete(PVOID buffer, ULONG tag)
+{
+ if (buffer)
+ {
+ ExFreePoolWithTag(buffer, tag);
+ }
+}
+
+void __cdecl operator delete(_Pre_maybenull_ __drv_freesMem(Mem) PVOID buffer, _In_ size_t cbSize)
+{
+ UNREFERENCED_PARAMETER(cbSize);
+
+ if (buffer)
+ {
+ ExFreePool(buffer);
+ }
+}
+
+void __cdecl operator delete[](_Pre_maybenull_ __drv_freesMem(Mem) PVOID buffer)
+{
+ if (buffer)
+ {
+ ExFreePool(buffer);
+ }
+}
+
+void __cdecl operator delete[](_Pre_maybenull_ __drv_freesMem(Mem) PVOID buffer, _In_ size_t cbSize)
+{
+ UNREFERENCED_PARAMETER(cbSize);
+
+ if (buffer)
+ {
+ ExFreePool(buffer);
+ }
+}
+