diff --git a/GMap.NET.WindowsMobile/GMap.NET.GPS/Utils.cs b/GMap.NET.WindowsMobile/GMap.NET.GPS/Utils.cs new file mode 100644 --- /dev/null +++ b/GMap.NET.WindowsMobile/GMap.NET.GPS/Utils.cs @@ -0,0 +1,60 @@ +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// +// Use of this sample source code is subject to the terms of the Microsoft +// license agreement under which you licensed this sample source code. If +// you did not accept the terms of the license agreement, you are not +// authorized to use this sample source code. For the terms of the license, +// please see the license agreement between you and Microsoft or, if applicable, +// see the LICENSE.RTF on your install media or the root of your tools installation. +// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES OR INDEMNITIES. +// +#region Using directives + +using System; + +#endregion + +namespace GMap.NET.GPS +{ + /// + /// Summary description for Utils. + /// + public class Utils + { + public Utils() + { + } + + public static IntPtr LocalAlloc(int byteCount) + { + IntPtr ptr = Win32.LocalAlloc(Win32.LMEM_ZEROINIT, byteCount); + if(ptr == IntPtr.Zero) + { + throw new OutOfMemoryException(); + } + + return ptr; + } + + public static void LocalFree(IntPtr hMem) + { + IntPtr ptr = Win32.LocalFree(hMem); + if(ptr != IntPtr.Zero) + { + throw new ArgumentException(); + } + } + } + + public class Win32 + { + public const int LMEM_ZEROINIT = 0x40; + [System.Runtime.InteropServices.DllImport("coredll.dll", EntryPoint="#33", SetLastError=true)] + public static extern IntPtr LocalAlloc(int flags, int byteCount); + + [System.Runtime.InteropServices.DllImport("coredll.dll", EntryPoint="#36", SetLastError=true)] + public static extern IntPtr LocalFree(IntPtr hMem); + } +}