e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
60 lines
2.5 KiB
C#
60 lines
2.5 KiB
C#
// <copyright file="UnsafeNativeMethods.cs" company="Microsoft">
|
|
// Copyright (c) 2009 Microsoft Corporation. All rights reserved.
|
|
// </copyright>
|
|
using System;
|
|
using System.Collections;
|
|
using System.Diagnostics.CodeAnalysis;
|
|
using System.IO;
|
|
using System.Runtime.ConstrainedExecution;
|
|
using System.Runtime.InteropServices;
|
|
using System.Runtime.Versioning;
|
|
using System.Security;
|
|
using System.Security.Permissions;
|
|
using System.Text;
|
|
|
|
namespace System.Runtime.Caching {
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Justification = "Grandfathered suppression from original caching code checkin")]
|
|
[SecurityCritical]
|
|
internal static class UnsafeNativeMethods {
|
|
private const string KERNEL32 = "KERNEL32.DLL";
|
|
private const string ADVAPI32 = "ADVAPI32.DLL";
|
|
|
|
/*
|
|
* KERNEL32.DLL
|
|
*/
|
|
|
|
[SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Justification = "Grandfathered suppression from original caching code checkin")]
|
|
[DllImport(KERNEL32, CharSet=CharSet.Unicode)]
|
|
internal extern static int GetModuleFileName(IntPtr module, StringBuilder filename, int size);
|
|
|
|
[SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Justification = "Grandfathered suppression from original caching code checkin")]
|
|
[DllImport(KERNEL32, CharSet=CharSet.Unicode)]
|
|
internal extern static int GlobalMemoryStatusEx(ref MEMORYSTATUSEX memoryStatusEx);
|
|
|
|
/*
|
|
* ADVAPI32.DLL
|
|
*/
|
|
|
|
[SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage", Justification = "Grandfathered suppression from original caching code checkin")]
|
|
[DllImport(ADVAPI32), ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
|
|
internal static extern int RegCloseKey(IntPtr hKey);
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode)]
|
|
internal struct MEMORYSTATUSEX {
|
|
internal int dwLength;
|
|
internal int dwMemoryLoad;
|
|
internal long ullTotalPhys;
|
|
internal long ullAvailPhys;
|
|
internal long ullTotalPageFile;
|
|
internal long ullAvailPageFile;
|
|
internal long ullTotalVirtual;
|
|
internal long ullAvailVirtual;
|
|
internal long ullAvailExtendedVirtual;
|
|
internal void Init() {
|
|
dwLength = Marshal.SizeOf(typeof(MEMORYSTATUSEX));
|
|
}
|
|
}
|
|
}
|