import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'


The **GW2FileErrorMsg** function retrieves the error message reported by Glasswall for a given `session ID`. The error message is placed in an output buffer.

If there was more than one reason for the error, only one will be reported by this function call. If details are required for the failure, they will be present in the analysis report produced if either of the functions **GW2RegisterAnalysisFile** or **GW2AnalysisRegisterMemory** were called on the session. If not, the document can be processed by Glasswall using either of those functions in another session to produce a detailed analysis report.

<Tabs>

<TabItem value="C++" label="C++" default>

**Synopsis**

```cpp

#include "glasswall.core2.api.h"


// The **GW2FileErrorMsg** function retrieves the error message reported by Glasswall.
// A pointer to the error message is placed in the object pointed to by **errorMsgBuffer**
// and the size, in bytes, of the error message is placed in the **size_t** object
// pointed to by **errorMsgBufferLength**.

int GW2FileErrorMsg(
    Session session,
    char **errorMsgBuffer,
    size_t *errorMsgBufferLength);

```

**Returns**

Returns an integer `GW2_RetStatus` enum value. Negative numbers indicate a failure.


</TabItem>

<TabItem value="C#" label="C#">

**Synopsis**

```csharp
/// <summary>
///
/// </summary>
/// <param name="session">Session ID number</param>
/// <param name="outputBuffer">Location in memory where the error message will be placed</param>
/// <param name="bufferLength">Size of the output buffer</param>
public int FileErrorMsg(
    int session,
    out IntPtr outputBuffer,
    ref UIntPtr bufferLength)

```

**Returns**

Returns an integer `GW2_RetStatus` enum value. Negative numbers indicate a failure.

</TabItem>

<TabItem value="Java" label="Java">

**Synopsis**

```java
import com.glasswall.core2javabridge.*;

public String GW2FileErrorMsgString(int session) throws GlasswallException
```

**Note**

The **GW2FileErrorMsgString** function parameters have been updated to use `String` in place of `byte[]`, and to remove the need to call **GetErrorBuffer** to retrieve the data. The original functions have been deprecated.

**Returns**

The **GW2FileErrorMsgString** returns a `String` containing the session error messages. The `String` will be empty if there are no error messages to retrieve.

A **GlasswallException** exception will be thrown if `session` is invalid, or if the error message could not be retrieved.

**Synopsis - Deprecated Functions**

```java
import com.glasswall.core2javabridge.*;

(Deprecated)
public int GW2FileErrorMsg(int session) throws GlasswallException
public byte[] GetErrorBuffer(int session) throws GlasswallException
```

**Description**

The **GW2FileErrorMsg** function outputs the file error message for the session specified by `session` to an internal buffer. Call **GetErrorBuffer** after calling **GW2RunSession** in order to retrieve the error message data.

Refer to API Overview/Return types for valid enumerators for `format`.

**Returns - Deprecated Functions**

The **GW2FileErrorMsg** function returns a **GW2_RetStatus** enumeration converted to `int`. The value will be negative if an error occurred. `0` indicates success. Refer to the API Overview/Return types for details. 

The **GetErrorBuffer** function returns a byte array containing the error details. This will be null if **GW2FileErrorMsg** has not been called.

A **GlasswallException** exception will be thrown if `session` is invalid, or if the error message could not be retrieved.

</TabItem>

<TabItem value="Python" label="Python">

**Synopsis**

Retrieve the Glasswall Session Process error message.

```py
def file_error_message(self, session: int) -> str:
    """ Retrieve the Glasswall Session Process error message.

    Args:
        session (int): The session integer.

    Returns:
        error_message (str): The Glasswall Session Process error message.
    """
```

**Returns**

An error message as a string.

</TabItem>

<TabItem value="JavaScript" label="JavaScript">

**Synopsis**

```jsx
/**
* This function retrieves the error message reported by Glasswall. If more than one error
* is reported, the last one will be returned.
*
*/
GW2FileErrorMsg(
    session,
    errorMsgBuffer,
    errorMsgBufferLength)
```

**Returns**

Returns an integer `GW2_RetStatus` enum value. Negative numbers indicate a failure.

**Example**

```jsx

function getFileErrorMsg(session_id, gw) {
    /*
        GW2FileErrorMsg API signature
        int GW2FileErrorMsg(
            Session session,
            char **errorMsgBuffer,
            size_t *errorMsgBufferLength
        );
    */

    // allocate pointer space to store the pointer to the message buffer
    let CString_ptr = ref.refType(ref.types.CString);
    let errorMsgBuffer = ref.alloc(CString_ptr);

    // allocate space to store the buffer length; use .deref() to extract it
    let errorMsgBufferLength = ref.alloc('size_t');

    let rv = gw.GW2FileErrorMsg(session_id, errorMsgBuffer, errorMsgBufferLength);

    buf_len = errorMsgBufferLength.deref();
    if (buf_len == 0)
        arr_buf = "";
    else
        arr_buf = buffer_to_array(errorMsgBuffer, errorMsgBufferLength);

    let message = `\n  GW2FileErrorMsg:return=${rv}`;
    message += "\n    errorMsgBuffer = \"" + arr_buf.toString() + '"';
    message += `\n    errorMsgBufferLength = ${buf_len}`;

    return message;
}

```

</TabItem>

</Tabs>