|
using System;
using System.ComponentModel;
using System.Runtime.InteropServices;
namespace System.Native
{
public class NativeException : Exception
{
/// <summary>
/// Checks for last error
/// http://msdn.microsoft.com/library/en-us/debug/base/system_error_codes.asp
/// </summary>
/// <param name="FunctionName">Function name for error message.</param>
/// <param name="DLLName">DLL name for error message</param>
public static NativeException GetException ( string FunctionName, string DLLName )
{
const string MESSAGE = "Error in Native Function {0}-{1}. Error Code {2}.\nError Description : {3}\n";
int errorCode;
errorCode = Marshal.GetLastWin32Error();
if ( errorCode == 0 )
{
return null;
}
Win32Exception e = new Win32Exception(errorCode);
return new NativeException(String.Format(MESSAGE,DLLName,FunctionName,errorCode,e.Message),e);
}
/// <summary>
/// Native error code
/// </summary>
private int errorCode;
public NativeException ( string Message, int ErrorCode )
: base( Message )
{
this.errorCode = errorCode;
}
public NativeException ( string Message, Win32Exception e )
: base( Message,e)
{
this.errorCode = e.NativeErrorCode;
}
/// <summary>
/// Gets the error code
/// </summary>
public int ErrorCode
{
get
{
return this.errorCode;
}
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I've been programming for 35 years - started in machine language on the National Semiconductor SC/MP chip, moved via the 8080 to the Z80 - graduated through HP Rocky Mountain Basic and HPL - then to C and C++ and now C#.
I used (30 or so years ago when I worked for Hewlett Packard) to repair HP Oscilloscopes and Spectrum Analysers - for a while there I was the one repairing DC to daylight SpecAns in the Asia Pacific area.
Afterward I was the fourth team member added to the Australia Post EPOS project at Unisys Australia. We grew to become an A$400 million project. I wrote a few device drivers for the project under Microsoft OS/2 v 1.3 - did hardware qualification and was part of the rollout team dealing directly with the customer.
Born and bred in Melbourne Australia, now living in Scottsdale Arizona USA, became a US Citizen on September 29th, 2006.
I work for a medical insurance broker, learning how to create ASP.NET websites in VB.Net and C#. It's all good.
Oh, I'm also a Kentucky Colonel.
http://www.kycolonels.org