Exemplo n.º 1
0
        public static void Can_call_lpstr_extern_function()
        {
            var buffer = Pointer.Create <LPSTR>(Marshal.AllocCoTaskMem(1 * MAX_PATH));

            try
            {
                var length = GetSystemDirectoryA(buffer, MAX_PATH);
                if (length == 0)
                {
                    throw Marshal.GetExceptionForHR(Marshal.GetLastWin32Error());
                }
                var path = AnsiStringPointer.MarshalToString(buffer, length);
                Assert.NotNull(path);
            }
            finally
            {
                Marshal.FreeCoTaskMem(buffer.Pointer);
            }
        }
Exemplo n.º 2
0
        public static void Can_call_lpstr_extern_function(COMPUTER_NAME_FORMAT nameType)
        {
            int length = 255;
            var buffer = Pointer.Create <LPSTR>(Marshal.AllocCoTaskMem(1 * length));

            try
            {
                bool successful = GetComputerNameExA(nameType, buffer, ref length);
                if (!successful)
                {
                    throw Marshal.GetExceptionForHR(Marshal.GetLastWin32Error());
                }
                var path = AnsiStringPointer.MarshalToString(buffer, length);
                Assert.NotNull(path);
            }
            finally
            {
                Marshal.FreeCoTaskMem(buffer.Pointer);
            }
        }