diff --git a/YaraSharp/Exceptions.cpp b/YaraSharp/Exceptions.cpp
index 44f5efa..8d49b74 100644
--- a/YaraSharp/Exceptions.cpp
+++ b/YaraSharp/Exceptions.cpp
@@ -1,128 +1,114 @@
#include "Stdafx.h"
+#include "YaraExceptions.h"
-// YSException
namespace YaraSharp
{
void YSException::ThrowOnError(int error)
{
switch (error)
{
- case ERROR_SUCCESS:
- return;
-
- case ERROR_INSUFICIENT_MEMORY:
- throw gcnew OutOfMemoryException();
-
- default:
- throw gcnew Exception(String::Format("Yara error: {0}. Code {1}", NiceErrorCode(error), error));
+ case ERROR_SUCCESS:
+ return;
+ case ERROR_INSUFICIENT_MEMORY:
+ throw gcnew OutOfMemoryException();
+ case ERROR_COULD_NOT_ATTACH_TO_PROCESS:
+ throw gcnew YaraAttachToProcessFailure();
+ case ERROR_COULD_NOT_OPEN_FILE:
+ throw gcnew YaraOpenFileFailure();
+ case ERROR_COULD_NOT_MAP_FILE:
+ throw gcnew YaraMapFileFailure();
+ case ERROR_INVALID_FILE:
+ throw gcnew YaraInvalidFile();
+ case ERROR_CORRUPT_FILE:
+ throw gcnew YaraCorruptFile();
+ case ERROR_UNSUPPORTED_FILE_VERSION:
+ throw gcnew YaraUnsupportedFileVersion();
+ case ERROR_INVALID_REGULAR_EXPRESSION:
+ throw gcnew YaraInvalidRegularExpression();
+ case ERROR_INVALID_HEX_STRING:
+ throw gcnew YaraInvalidHexString();
+ case ERROR_SYNTAX_ERROR:
+ throw gcnew YaraSyntaxError();
+ case ERROR_LOOP_NESTING_LIMIT_EXCEEDED:
+ throw gcnew YaraLoopNestingLimitExceeded();
+ case ERROR_DUPLICATED_LOOP_IDENTIFIER:
+ throw gcnew YaraDuplicatedLoopIdentifier();
+ case ERROR_DUPLICATED_IDENTIFIER:
+ throw gcnew YaraDuplicatedIdentifier();
+ case ERROR_DUPLICATED_TAG_IDENTIFIER:
+ throw gcnew YaraDuplicatedTagIdentifier();
+ case ERROR_DUPLICATED_META_IDENTIFIER:
+ throw gcnew YaraDuplicatedMetaIdentifier();
+ case ERROR_DUPLICATED_STRING_IDENTIFIER:
+ throw gcnew YaraDuplicatedStringIdentifier();
+ case ERROR_UNREFERENCED_STRING:
+ throw gcnew YaraUnreferencedString();
+ case ERROR_UNDEFINED_STRING:
+ throw gcnew YaraUndefinedString();
+ case ERROR_UNDEFINED_IDENTIFIER:
+ throw gcnew YaraUndefinedIdentifier();
+ case ERROR_MISPLACED_ANONYMOUS_STRING:
+ throw gcnew YaraMisplacedAnonymousString();
+ case ERROR_INCLUDES_CIRCULAR_REFERENCE:
+ throw gcnew YaraCircularReference();
+ case ERROR_INCLUDE_DEPTH_EXCEEDED:
+ throw gcnew YaraDepthExceeded();
+ case ERROR_WRONG_TYPE:
+ throw gcnew YaraWrongType();
+ case ERROR_EXEC_STACK_OVERFLOW:
+ throw gcnew YaraExecStackOverflow();
+ case ERROR_SCAN_TIMEOUT:
+ throw gcnew YaraScanTimeout();
+ case ERROR_TOO_MANY_SCAN_THREADS:
+ throw gcnew YaraTooManyScanThreads();
+ case ERROR_CALLBACK_ERROR:
+ throw gcnew YaraCallbackError();
+ case ERROR_INVALID_ARGUMENT:
+ throw gcnew YaraInvalidArgument();
+ case ERROR_TOO_MANY_MATCHES:
+ throw gcnew YaraTooManyMatches();
+ case ERROR_INTERNAL_FATAL_ERROR:
+ throw gcnew YaraInternalFatalError();
+ case ERROR_NESTED_FOR_OF_LOOP:
+ throw gcnew YaraNestedForOfLoop();
+ case ERROR_INVALID_FIELD_NAME:
+ throw gcnew YaraInvalidFieldName();
+ case ERROR_UNKNOWN_MODULE:
+ throw gcnew YaraUnknownModule();
+ case ERROR_NOT_A_STRUCTURE:
+ throw gcnew YaraNotAStructure();
+ case ERROR_NOT_INDEXABLE:
+ throw gcnew YaraNotIndexable();
+ case ERROR_NOT_A_FUNCTION:
+ throw gcnew YaraNotAFunction();
+ case ERROR_INVALID_FORMAT:
+ throw gcnew YaraInvalidFormat();
+ case ERROR_TOO_MANY_ARGUMENTS:
+ throw gcnew YaraTooManyArguments();
+ case ERROR_WRONG_ARGUMENTS:
+ throw gcnew YaraWrongArguments();
+ case ERROR_WRONG_RETURN_TYPE:
+ throw gcnew YaraWrongReturnType();
+ case ERROR_DUPLICATED_STRUCTURE_MEMBER:
+ throw gcnew YaraDuplicatedStructureMember();
+ case ERROR_EMPTY_STRING:
+ throw gcnew YaraEmptyString();
+ case ERROR_DIVISION_BY_ZERO:
+ throw gcnew YaraDivisionByZero();
+ case ERROR_REGULAR_EXPRESSION_TOO_LARGE:
+ throw gcnew YaraRegularExpressionTooLarge();
+ case ERROR_TOO_MANY_RE_FIBERS:
+ throw gcnew YaraTooManyReFibers();
+ case ERROR_COULD_NOT_READ_PROCESS_MEMORY:
+ throw gcnew YaraCouldNotReadProcessMemory();
+ case ERROR_INVALID_EXTERNAL_VARIABLE_TYPE:
+ throw gcnew YaraInvalidExternalVariableType();
+ default:
+ throw gcnew Exception("An unknown exception occured");
}
}
void YSException::ThrowOnError(String^ error)
{
throw gcnew Exception(String::Format("Error: {0}", error));
}
-
- String^ YSException::NiceErrorCode(int error)
- {
- // TODO: nice erros
- switch (error)
- {
- case ERROR_INSUFICIENT_MEMORY:
- return "ERROR_INSUFICIENT_MEMORY";
- case ERROR_COULD_NOT_ATTACH_TO_PROCESS:
- return "COULD_NOT_ATTACH_TO_PROCESS";
- case ERROR_COULD_NOT_OPEN_FILE:
- return "ERROR_COULD_NOT_OPEN_FILE";
- case ERROR_COULD_NOT_MAP_FILE:
- return "ERROR_COULD_NOT_MAP_FILE";
- case ERROR_INVALID_FILE:
- return "ERROR_INVALID_FILE";
- case ERROR_CORRUPT_FILE:
- return "ERROR_CORRUPT_FILE";
- case ERROR_UNSUPPORTED_FILE_VERSION:
- return "ERROR_UNSUPPORTED_FILE_VERSION";
- case ERROR_INVALID_REGULAR_EXPRESSION:
- return "ERROR_INVALID_REGULAR_EXPRESSION";
- case ERROR_INVALID_HEX_STRING:
- return "ERROR_INVALID_HEX_STRING";
- case ERROR_SYNTAX_ERROR:
- return "ERROR_SYNTAX_ERROR";
- case ERROR_LOOP_NESTING_LIMIT_EXCEEDED:
- return "ERROR_LOOP_NESTING_LIMIT_EXCEEDED";
- case ERROR_DUPLICATED_LOOP_IDENTIFIER:
- return "ERROR_DUPLICATED_LOOP_IDENTIFIER";
- case ERROR_DUPLICATED_IDENTIFIER:
- return "ERROR_DUPLICATED_IDENTIFIER";
- case ERROR_DUPLICATED_TAG_IDENTIFIER:
- return "ERROR_DUPLICATED_TAG_IDENTIFIER";
- case ERROR_DUPLICATED_META_IDENTIFIER:
- return "ERROR_DUPLICATED_META_IDENTIFIER";
- case ERROR_DUPLICATED_STRING_IDENTIFIER:
- return "ERROR_DUPLICATED_STRING_IDENTIFIER";
- case ERROR_UNREFERENCED_STRING:
- return "ERROR_UNREFERENCED_STRING";
- case ERROR_UNDEFINED_STRING:
- return "ERROR_UNDEFINED_STRING";
- case ERROR_UNDEFINED_IDENTIFIER:
- return "ERROR_UNDEFINED_IDENTIFIER";
- case ERROR_MISPLACED_ANONYMOUS_STRING:
- return "ERROR_MISPLACED_ANONYMOUS_STRING";
- case ERROR_INCLUDES_CIRCULAR_REFERENCE:
- return "ERROR_INCLUDES_CIRCULAR_REFERENCE";
- case ERROR_INCLUDE_DEPTH_EXCEEDED:
- return "ERROR_INCLUDE_DEPTH_EXCEEDED";
- case ERROR_WRONG_TYPE:
- return "ERROR_WRONG_TYPE";
- case ERROR_EXEC_STACK_OVERFLOW:
- return "ERROR_EXEC_STACK_OVERFLOW";
- case ERROR_SCAN_TIMEOUT:
- return "ERROR_SCAN_TIMEOUT";
- case ERROR_TOO_MANY_SCAN_THREADS:
- return "ERROR_TOO_MANY_SCAN_THREADS";
- case ERROR_CALLBACK_ERROR:
- return "ERROR_CALLBACK_ERROR";
- case ERROR_INVALID_ARGUMENT:
- return "ERROR_INVALID_ARGUMENT";
- case ERROR_TOO_MANY_MATCHES:
- return "ERROR_TOO_MANY_MATCHES";
- case ERROR_INTERNAL_FATAL_ERROR:
- return "ERROR_INTERNAL_FATAL_ERROR";
- case ERROR_NESTED_FOR_OF_LOOP:
- return "ERROR_NESTED_FOR_OF_LOOP";
- case ERROR_INVALID_FIELD_NAME:
- return "ERROR_INVALID_FIELD_NAME";
- case ERROR_UNKNOWN_MODULE:
- return "ERROR_UNKNOWN_MODULE";
- case ERROR_NOT_A_STRUCTURE:
- return "ERROR_NOT_A_STRUCTURE";
- case ERROR_NOT_INDEXABLE:
- return "ERROR_NOT_INDEXABLE";
- case ERROR_NOT_A_FUNCTION:
- return "ERROR_NOT_A_FUNCTION";
- case ERROR_INVALID_FORMAT:
- return "ERROR_INVALID_FORMAT";
- case ERROR_TOO_MANY_ARGUMENTS:
- return "ERROR_TOO_MANY_ARGUMENTS";
- case ERROR_WRONG_ARGUMENTS:
- return "ERROR_WRONG_ARGUMENTS";
- case ERROR_WRONG_RETURN_TYPE:
- return "ERROR_WRONG_RETURN_TYPE";
- case ERROR_DUPLICATED_STRUCTURE_MEMBER:
- return "ERROR_DUPLICATED_STRUCTURE_MEMBER";
- case ERROR_EMPTY_STRING:
- return "ERROR_EMPTY_STRING";
- case ERROR_DIVISION_BY_ZERO:
- return "ERROR_DIVISION_BY_ZERO";
- case ERROR_REGULAR_EXPRESSION_TOO_LARGE:
- return "ERROR_REGULAR_EXPRESSION_TOO_LARGE";
- case ERROR_TOO_MANY_RE_FIBERS:
- return "ERROR_TOO_MANY_RE_FIBERS";
- case ERROR_COULD_NOT_READ_PROCESS_MEMORY:
- return "ERROR_COULD_NOT_READ_PROCESS_MEMORY";
- case ERROR_INVALID_EXTERNAL_VARIABLE_TYPE:
- return "ERROR_INVALID_EXTERNAL_VARIABLE_TYPE";
- default:
- return "UNKNOWN";
- }
- }
}
diff --git a/YaraSharp/Exceptions.h b/YaraSharp/Exceptions.h
index d8efd06..82bd333 100644
--- a/YaraSharp/Exceptions.h
+++ b/YaraSharp/Exceptions.h
@@ -4,9 +4,6 @@ namespace YaraSharp
{
public ref class YSException abstract sealed
{
- private:
- static String^ NiceErrorCode(int error);
-
public:
static void ThrowOnError(int error);
static void ThrowOnError(String^ error);
diff --git a/YaraSharp/YaraExceptions.cpp b/YaraSharp/YaraExceptions.cpp
new file mode 100644
index 0000000..ff63112
--- /dev/null
+++ b/YaraSharp/YaraExceptions.cpp
@@ -0,0 +1,145 @@
+#include "Stdafx.h"
+#include "YaraExceptions.h"
+
+namespace YaraSharp
+{
+ // Code 1 is handled by OutOfMemoryException
+
+ // Code 2
+ YaraAttachToProcessFailure::YaraAttachToProcessFailure() : Exception(String::Format("{0} - Code {1}", "ERROR_COULD_NOT_ATTACH_TO_PROCESS", ERROR_COULD_NOT_ATTACH_TO_PROCESS)) {}
+
+ // Code 3
+ YaraOpenFileFailure::YaraOpenFileFailure() : Exception(String::Format("{0} - Code {1}", "ERROR_COULD_NOT_OPEN_FILE", ERROR_COULD_NOT_OPEN_FILE)) {}
+
+ // Code 4
+ YaraMapFileFailure::YaraMapFileFailure() : Exception(String::Format("{0} - Code {1}", "ERROR_COULD_NOT_MAP_FILE", ERROR_COULD_NOT_MAP_FILE)) {}
+
+ // Code 6
+ YaraInvalidFile::YaraInvalidFile() : Exception(String::Format("{0} - Code {1}", "ERROR_INVALID_FILE", ERROR_INVALID_FILE)) {}
+
+ // Code 7
+ YaraCorruptFile::YaraCorruptFile() : Exception(String::Format("{0} - Code {1}", "ERROR_CORRUPT_FILE", ERROR_CORRUPT_FILE)) {}
+
+ // Code 8
+ YaraUnsupportedFileVersion::YaraUnsupportedFileVersion() : Exception(String::Format("{0} - Code {1}", "ERROR_UNSUPPORTED_FILE_VERSION", ERROR_UNSUPPORTED_FILE_VERSION)) {}
+
+ // Code 9
+ YaraInvalidRegularExpression::YaraInvalidRegularExpression() : Exception(String::Format("{0} - Code {1}", "ERROR_INVALID_REGULAR_EXPRESSION", ERROR_INVALID_REGULAR_EXPRESSION)) {}
+
+ // Code 10
+ YaraInvalidHexString::YaraInvalidHexString() : Exception(String::Format("{0} - Code {1}", "ERROR_INVALID_HEX_STRING", ERROR_INVALID_HEX_STRING)) {}
+
+ // Code 11
+ YaraSyntaxError::YaraSyntaxError() : Exception(String::Format("{0} - Code {1}", "ERROR_SYNTAX_ERROR", ERROR_SYNTAX_ERROR)) {}
+
+ // Code 12
+ YaraLoopNestingLimitExceeded::YaraLoopNestingLimitExceeded() : Exception(String::Format("{0} - Code {1}", "ERROR_LOOP_NESTING_LIMIT_EXCEEDED", ERROR_LOOP_NESTING_LIMIT_EXCEEDED)) {}
+
+ // Code 13
+ YaraDuplicatedLoopIdentifier::YaraDuplicatedLoopIdentifier() : Exception(String::Format("{0} - Code {1}", "ERROR_DUPLICATED_LOOP_IDENTIFIER", ERROR_DUPLICATED_LOOP_IDENTIFIER)) {}
+
+ // Code 14
+ YaraDuplicatedIdentifier::YaraDuplicatedIdentifier() : Exception(String::Format("{0} - Code {1}", "ERROR_DUPLICATED_IDENTIFIER", ERROR_DUPLICATED_IDENTIFIER)) {}
+
+ // Code 15
+ YaraDuplicatedTagIdentifier::YaraDuplicatedTagIdentifier() : Exception(String::Format("{0} - Code {1}", "ERROR_DUPLICATED_TAG_IDENTIFIER", ERROR_DUPLICATED_TAG_IDENTIFIER)) {}
+
+ // Code 16
+ YaraDuplicatedMetaIdentifier::YaraDuplicatedMetaIdentifier() : Exception(String::Format("{0} - Code {1}", "ERROR_DUPLICATED_META_IDENTIFIER", ERROR_DUPLICATED_META_IDENTIFIER)) {}
+
+ // Code 17
+ YaraDuplicatedStringIdentifier::YaraDuplicatedStringIdentifier() : Exception(String::Format("{0} - Code {1}", "ERROR_DUPLICATED_STRING_IDENTIFIER", ERROR_DUPLICATED_STRING_IDENTIFIER)) {}
+
+ // Code 18
+ YaraUnreferencedString::YaraUnreferencedString() : Exception(String::Format("{0} - Code {1}", "ERROR_UNREFERENCED_STRING", ERROR_UNREFERENCED_STRING)) {}
+
+ // Code 19
+ YaraUndefinedString::YaraUndefinedString() : Exception(String::Format("{0} - Code {1}", "ERROR_UNDEFINED_STRING", ERROR_UNDEFINED_STRING)) {}
+
+ // Code 20
+ YaraUndefinedIdentifier::YaraUndefinedIdentifier() : Exception(String::Format("{0} - Code {1}", "ERROR_UNDEFINED_IDENTIFIER", ERROR_UNDEFINED_IDENTIFIER)) {}
+
+ // Code 21
+ YaraMisplacedAnonymousString::YaraMisplacedAnonymousString() : Exception(String::Format("{0} - Code {1}", "ERROR_MISPLACED_ANONYMOUS_STRING", ERROR_MISPLACED_ANONYMOUS_STRING)) {}
+
+ // Code 22
+ YaraCircularReference::YaraCircularReference() : Exception(String::Format("{0} - Code {1}", "ERROR_INCLUDES_CIRCULAR_REFERENCE", ERROR_INCLUDES_CIRCULAR_REFERENCE)) {}
+
+ // Code 23
+ YaraDepthExceeded::YaraDepthExceeded() : Exception(String::Format("{0} - Code {1}", "ERROR_INCLUDE_DEPTH_EXCEEDED", ERROR_INCLUDE_DEPTH_EXCEEDED)) {}
+
+ // Code 24
+ YaraWrongType::YaraWrongType() : Exception(String::Format("{0} - Code {1}", "ERROR_WRONG_TYPE", ERROR_WRONG_TYPE)) {}
+
+ // Code 25
+ YaraExecStackOverflow::YaraExecStackOverflow() : Exception(String::Format("{0} - Code {1}", "ERROR_EXEC_STACK_OVERFLOW", ERROR_EXEC_STACK_OVERFLOW)) {}
+
+ // Code 26
+ YaraScanTimeout::YaraScanTimeout() : Exception(String::Format("{0} - Code {1}", "ERROR_SCAN_TIMEOUT", ERROR_SCAN_TIMEOUT)) {}
+
+ // Code 27
+ YaraTooManyScanThreads::YaraTooManyScanThreads() : Exception(String::Format("{0} - Code {1}", "ERROR_TOO_MANY_SCAN_THREADS", ERROR_TOO_MANY_SCAN_THREADS)) {}
+
+ // Code 28
+ YaraCallbackError::YaraCallbackError() : Exception(String::Format("{0} - Code {1}", "ERROR_CALLBACK_ERROR", ERROR_CALLBACK_ERROR)) {}
+
+ // Code 29
+ YaraInvalidArgument::YaraInvalidArgument() : Exception(String::Format("{0} - Code {1}", "ERROR_INVALID_ARGUMENT", ERROR_INVALID_ARGUMENT)) {}
+
+ // Code 30
+ YaraTooManyMatches::YaraTooManyMatches() : Exception(String::Format("{0} - Code {1}", "ERROR_TOO_MANY_MATCHES", ERROR_TOO_MANY_MATCHES)) {}
+
+ // Code 31
+ YaraInternalFatalError::YaraInternalFatalError() : Exception(String::Format("{0} - Code {1}", "ERROR_INTERNAL_FATAL_ERROR", ERROR_INTERNAL_FATAL_ERROR)) {}
+
+ // Code 32
+ YaraNestedForOfLoop::YaraNestedForOfLoop() : Exception(String::Format("{0} - Code {1}", "ERROR_NESTED_FOR_OF_LOOP", ERROR_NESTED_FOR_OF_LOOP)) {}
+
+ // Code 33
+ YaraInvalidFieldName::YaraInvalidFieldName() : Exception(String::Format("{0} - Code {1}", "ERROR_INVALID_FIELD_NAME", ERROR_INVALID_FIELD_NAME)) {}
+
+ // Code 34
+ YaraUnknownModule::YaraUnknownModule() : Exception(String::Format("{0} - Code {1}", "ERROR_UNKNOWN_MODULE", ERROR_UNKNOWN_MODULE)) {}
+
+ // Code 35
+ YaraNotAStructure::YaraNotAStructure() : Exception(String::Format("{0} - Code {1}", "ERROR_NOT_A_STRUCTURE", ERROR_NOT_A_STRUCTURE)) {}
+
+ // Code 36
+ YaraNotIndexable::YaraNotIndexable() : Exception(String::Format("{0} - Code {1}", "ERROR_NOT_INDEXABLE", ERROR_NOT_INDEXABLE)) {}
+
+ // Code 37
+ YaraNotAFunction::YaraNotAFunction() : Exception(String::Format("{0} - Code {1}", "ERROR_NOT_A_FUNCTION", ERROR_NOT_A_FUNCTION)) {}
+
+ // Code 38
+ YaraInvalidFormat::YaraInvalidFormat() : Exception(String::Format("{0} - Code {1}", "ERROR_INVALID_FORMAT", ERROR_INVALID_FORMAT)) {}
+
+ // Code 39
+ YaraTooManyArguments::YaraTooManyArguments() : Exception(String::Format("{0} - Code {1}", "ERROR_TOO_MANY_ARGUMENTS", ERROR_TOO_MANY_ARGUMENTS)) {}
+
+ // Code 40
+ YaraWrongArguments::YaraWrongArguments() : Exception(String::Format("{0} - Code {1}", "ERROR_WRONG_ARGUMENTS", ERROR_WRONG_ARGUMENTS)) {}
+
+ // Code 41
+ YaraWrongReturnType::YaraWrongReturnType() : Exception(String::Format("{0} - Code {1}", "ERROR_WRONG_RETURN_TYPE", ERROR_WRONG_RETURN_TYPE)) {}
+
+ // Code 42
+ YaraDuplicatedStructureMember::YaraDuplicatedStructureMember() : Exception(String::Format("{0} - Code {1}", "ERROR_DUPLICATED_STRUCTURE_MEMBER", ERROR_DUPLICATED_STRUCTURE_MEMBER)) {}
+
+ // Code 43
+ YaraEmptyString::YaraEmptyString() : Exception(String::Format("{0} - Code {1}", "ERROR_EMPTY_STRING", ERROR_EMPTY_STRING)) {}
+
+ // Code 44
+ YaraDivisionByZero::YaraDivisionByZero() : Exception(String::Format("{0} - Code {1}", "ERROR_DIVISION_BY_ZERO", ERROR_DIVISION_BY_ZERO)) {}
+
+ // Code 45
+ YaraRegularExpressionTooLarge::YaraRegularExpressionTooLarge() : Exception(String::Format("{0} - Code {1}", "ERROR_REGULAR_EXPRESSION_TOO_LARGE", ERROR_REGULAR_EXPRESSION_TOO_LARGE)) {}
+
+ // Code 46
+ YaraTooManyReFibers::YaraTooManyReFibers() : Exception(String::Format("{0} - Code {1}", "ERROR_TOO_MANY_RE_FIBERS", ERROR_TOO_MANY_RE_FIBERS)) {}
+
+ // Code 47
+ YaraCouldNotReadProcessMemory::YaraCouldNotReadProcessMemory() : Exception(String::Format("{0} - Code {1}", "ERROR_COULD_NOT_READ_PROCESS_MEMORY", ERROR_COULD_NOT_READ_PROCESS_MEMORY)) {}
+
+ // Code 48
+ YaraInvalidExternalVariableType::YaraInvalidExternalVariableType() : Exception(String::Format("{0} - Code {1}", "ERROR_INVALID_EXTERNAL_VARIABLE_TYPE", ERROR_INVALID_EXTERNAL_VARIABLE_TYPE)) {}
+}
\ No newline at end of file
diff --git a/YaraSharp/YaraExceptions.h b/YaraSharp/YaraExceptions.h
new file mode 100644
index 0000000..b956682
--- /dev/null
+++ b/YaraSharp/YaraExceptions.h
@@ -0,0 +1,328 @@
+#pragma once
+
+namespace YaraSharp
+{
+ // Code 1 is handled by OutOfMemoryException
+
+ // Code 2
+ public ref class YaraAttachToProcessFailure : public Exception
+ {
+ public:
+ YaraAttachToProcessFailure();
+ };
+
+ // Code 3
+ public ref class YaraOpenFileFailure : public Exception
+ {
+ public:
+ YaraOpenFileFailure();
+ };
+
+ // Code 4
+ public ref class YaraMapFileFailure : public Exception
+ {
+ public:
+ YaraMapFileFailure();
+ };
+
+ // Code 6
+ public ref class YaraInvalidFile : public Exception
+ {
+ public:
+ YaraInvalidFile();
+ };
+
+ // Code 7
+ public ref class YaraCorruptFile : public Exception
+ {
+ public:
+ YaraCorruptFile();
+ };
+
+ // Code 8
+ public ref class YaraUnsupportedFileVersion : public Exception
+ {
+ public:
+ YaraUnsupportedFileVersion();
+ };
+
+ // Code 9
+ public ref class YaraInvalidRegularExpression : public Exception
+ {
+ public:
+ YaraInvalidRegularExpression();
+ };
+
+ // Code 10
+ public ref class YaraInvalidHexString : public Exception
+ {
+ public:
+ YaraInvalidHexString();
+ };
+
+ // Code 11
+ public ref class YaraSyntaxError : public Exception
+ {
+ public:
+ YaraSyntaxError();
+ };
+
+ // Code 12
+ public ref class YaraLoopNestingLimitExceeded : public Exception
+ {
+ public:
+ YaraLoopNestingLimitExceeded();
+ };
+
+ // Code 13
+ public ref class YaraDuplicatedLoopIdentifier : public Exception
+ {
+ public:
+ YaraDuplicatedLoopIdentifier();
+ };
+
+ // Code 14
+ public ref class YaraDuplicatedIdentifier : public Exception
+ {
+ public:
+ YaraDuplicatedIdentifier();
+ };
+
+ // Code 15
+ public ref class YaraDuplicatedTagIdentifier : public Exception
+ {
+ public:
+ YaraDuplicatedTagIdentifier();
+ };
+
+ // Code 16
+ public ref class YaraDuplicatedMetaIdentifier : public Exception
+ {
+ public:
+ YaraDuplicatedMetaIdentifier();
+ };
+
+ // Code 17
+ public ref class YaraDuplicatedStringIdentifier : public Exception
+ {
+ public:
+ YaraDuplicatedStringIdentifier();
+ };
+
+ // Code 18
+ public ref class YaraUnreferencedString : public Exception
+ {
+ public:
+ YaraUnreferencedString();
+ };
+
+ // Code 19
+ public ref class YaraUndefinedString : public Exception
+ {
+ public:
+ YaraUndefinedString();
+ };
+
+ // Code 20
+ public ref class YaraUndefinedIdentifier : public Exception
+ {
+ public:
+ YaraUndefinedIdentifier();
+ };
+
+ // Code 21
+ public ref class YaraMisplacedAnonymousString : public Exception
+ {
+ public:
+ YaraMisplacedAnonymousString();
+ };
+
+ // Code 22
+ public ref class YaraCircularReference : public Exception
+ {
+ public:
+ YaraCircularReference();
+ };
+
+ // Code 23
+ public ref class YaraDepthExceeded : public Exception
+ {
+ public:
+ YaraDepthExceeded();
+ };
+
+ // Code 24
+ public ref class YaraWrongType : public Exception
+ {
+ public:
+ YaraWrongType();
+ };
+
+ // Code 25
+ public ref class YaraExecStackOverflow : public Exception
+ {
+ public:
+ YaraExecStackOverflow();
+ };
+
+ // Code 26
+ public ref class YaraScanTimeout : public Exception
+ {
+ public:
+ YaraScanTimeout();
+ };
+
+ // Code 27
+ public ref class YaraTooManyScanThreads : public Exception
+ {
+ public:
+ YaraTooManyScanThreads();
+ };
+
+ // Code 28
+ public ref class YaraCallbackError : public Exception
+ {
+ public:
+ YaraCallbackError();
+ };
+
+ // Code 29
+ public ref class YaraInvalidArgument : public Exception
+ {
+ public:
+ YaraInvalidArgument();
+ };
+
+ // Code 30
+ public ref class YaraTooManyMatches : public Exception
+ {
+ public:
+ YaraTooManyMatches();
+ };
+
+ // Code 31
+ public ref class YaraInternalFatalError : public Exception
+ {
+ public:
+ YaraInternalFatalError();
+ };
+
+ // Code 32
+ public ref class YaraNestedForOfLoop : public Exception
+ {
+ public:
+ YaraNestedForOfLoop();
+ };
+
+ // Code 33
+ public ref class YaraInvalidFieldName : public Exception
+ {
+ public:
+ YaraInvalidFieldName();
+ };
+
+ // Code 34
+ public ref class YaraUnknownModule : public Exception
+ {
+ public:
+ YaraUnknownModule();
+ };
+
+ // Code 35
+ public ref class YaraNotAStructure : public Exception
+ {
+ public:
+ YaraNotAStructure();
+ };
+
+ // Code 36
+ public ref class YaraNotIndexable : public Exception
+ {
+ public:
+ YaraNotIndexable();
+ };
+
+ // Code 37
+ public ref class YaraNotAFunction : public Exception
+ {
+ public:
+ YaraNotAFunction();
+ };
+
+ // Code 38
+ public ref class YaraInvalidFormat : public Exception
+ {
+ public:
+ YaraInvalidFormat();
+ };
+
+ // Code 39
+ public ref class YaraTooManyArguments : public Exception
+ {
+ public:
+ YaraTooManyArguments();
+ };
+
+ // Code 40
+ public ref class YaraWrongArguments : public Exception
+ {
+ public:
+ YaraWrongArguments();
+ };
+
+ // Code 41
+ public ref class YaraWrongReturnType : public Exception
+ {
+ public:
+ YaraWrongReturnType();
+ };
+
+ // Code 42
+ public ref class YaraDuplicatedStructureMember : public Exception
+ {
+ public:
+ YaraDuplicatedStructureMember();
+ };
+
+ // Code 43
+ public ref class YaraEmptyString : public Exception
+ {
+ public:
+ YaraEmptyString();
+ };
+
+ // Code 44
+ public ref class YaraDivisionByZero : public Exception
+ {
+ public:
+ YaraDivisionByZero();
+ };
+
+ // Code 45
+ public ref class YaraRegularExpressionTooLarge : public Exception
+ {
+ public:
+ YaraRegularExpressionTooLarge();
+ };
+
+ // Code 46
+ public ref class YaraTooManyReFibers : public Exception
+ {
+ public:
+ YaraTooManyReFibers();
+ };
+
+ // Code 47
+ public ref class YaraCouldNotReadProcessMemory : public Exception
+ {
+ public:
+ YaraCouldNotReadProcessMemory();
+ };
+
+ // Code 48
+ public ref class YaraInvalidExternalVariableType : public Exception
+ {
+ public:
+ YaraInvalidExternalVariableType();
+ };
+}
\ No newline at end of file
diff --git a/YaraSharp/YaraSharp.vcxproj b/YaraSharp/YaraSharp.vcxproj
index c90cef4..3b73208 100644
--- a/YaraSharp/YaraSharp.vcxproj
+++ b/YaraSharp/YaraSharp.vcxproj
@@ -164,6 +164,7 @@
+
@@ -181,6 +182,7 @@
Create
+
diff --git a/YaraSharp/YaraSharp.vcxproj.filters b/YaraSharp/YaraSharp.vcxproj.filters
index 8cefc22..653b4cd 100644
--- a/YaraSharp/YaraSharp.vcxproj.filters
+++ b/YaraSharp/YaraSharp.vcxproj.filters
@@ -41,6 +41,9 @@
Header Files
+
+ Header Files
+
@@ -73,6 +76,9 @@
Source Files
+
+ Source Files
+