Partager via


3.3.3.5.1 Failure Semantics

If the server encounters an error during the processing of a method call on the server, it SHOULD send back to the client a fault PDU, as specified in [C706] section 12.6.4.7, where the status field of the fault PDU is set to a descriptive status code. If the server is unable to send a fault PDU as specified here, it MUST close the transport connection. The exact protocol primitive used for closing a transport connection depends on the RPC transport and is documented in the normative reference for that transport.

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 MAY 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)