#define SRV_HARDWARE_STATUS (0xC0003000L | SRV_STATUS_FACILITY_CODE)
The server has 16 bits available to it in each 32-bit status code. See \nt\sdk\inc\ntstatus.h for a description of the use of the high 16 bits of the status. The layout of the bits is: 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 +---+-+-------------------------+-------+-----------------------+ |Sev|C| Facility--Server | Class | Code | +---+-+-------------------------+-------+-----------------------+ Class values: 0 - a server-specific error code, not put directly on the wire. 1 - SMB error class DOS. This includes those OS/2 errors that share code values and meanings with the SMB protocol. 2 - SMB error class SERVER. 3 - SMB error class HARDWARE. 4 - other SMB error classes 5-E - undefined F - an OS/2-specific error. If the client is OS/2, then the SMB error class is set to DOS and the code is set to the actual OS/2 error code contained in the Code field. The meaning of the Code field depends on the Class value. If the class is 00, then the code value is arbitrary. For other classes, the code is the actual code of the error in the SMB or OS/2 protocols.