3.2.3.5.1 Failure Semantics

If, during the processing of a method call on the server, the server encounters an error, it SHOULD send back to the client a fault PDU (as specified in [C706] section 12.5.3.5) where the status field of the fault PDU is set to a descriptive status code. If an authorization policy (as specified in section 3.1.1.1.3), restricting the access to the server is deployed, and server MUST set the status field to 0x00000005 in the fault PDU being sent back to the client. If the server is unable to send a fault PDU, as specified here, it MUST ignore further packets with the same activity ID and sequence number.

Servers can send any status code in the status field of a fault PDU except the following status codes, which a server MUST NOT send to the client. These status codes have special significance, and their presence in the status field might be flagged as a protocol error by the client.

Status codes that MUST NOT be sent by RPC servers

ERROR_SUCCESS (0x00000000)

STATUS_GUARD_PAGE_VIOLATION (0x80000001)

STATUS_DATATYPE_MISALIGNMENT (0x80000002)

STATUS_BREAKPOINT (0x80000003)

STATUS_ACCESS_VIOLATION (0xC0000005)

STATUS_IN_PAGE_ERROR (0xC0000006)

STATUS_ILLEGAL_INSTRUCTION (0xC000001D)

STATUS_PRIVILEGED_INSTRUCTION (0xC0000096)

STATUS_INSTRUCTION_MISALIGNMENT (0xC00000AA)

STATUS_STACK_OVERFLOW (0xC00000FD)

STATUS_POSSIBLE_DEADLOCK (0xC0000194)

STATUS_HANDLE_NOT_CLOSABLE (0xC0000235)

STATUS_STACK_BUFFER_OVERRUN (0xC0000409)

STATUS_ASSERTION_FAILURE (0xC0000420)