#define NT_SUCCESS(status)		((NTSTATUS)(status) >= 0)
#define NT_INFORMATION(status)	((ULONG)(status) >> 30 == 1)
#define NT_WARNING(status)		((ULONG)(status) >> 30 == 2)
#define NT_ERROR(status)		((ULONG)(status) >> 30 == 3)

#define STI_OK	S_OK
#define STI_ERROR_NO_ERROR	STI_OK
#define STI_NOTCONNECTED	S_FALSE
#define STI_CHANGENOEFFECT	S_FALSE
#define STIERR_OLD_VERSION	MAKE_HRESULT(SEVERITY_ERROR,FACILITY_WIN32,ERROR_OLD_WIN_VERSION)
#define STIERR_BETA_VERSION	MAKE_HRESULT(SEVERITY_ERROR,FACILITY_WIN32,ERROR_RMODE_APP)
#define STIERR_BADDRIVER	MAKE_HRESULT(SEVERITY_ERROR,FACILITY_WIN32,ERROR_BAD_DRIVER_LEVEL)
#define STIERR_DEVICENOTREG	REGDB_E_CLASSNOTREG
#define STIERR_OBJECTNOTFOUND	MAKE_HRESULT(SEVERITY_ERROR,FACILITY_WIN32,ERROR_FILE_NOT_FOUND)
#define STIERR_INVALID_PARAM	E_INVALIDARG
#define STIERR_NOINTERFACE	E_NOINTERFACE
#define STIERR_GENERIC		E_FAIL
#define STIERR_OUTOFMEMORY	E_OUTOFMEMORY
#define STIERR_UNSUPPORTED	E_NOTIMPL
#define STIERR_NOT_INITIALIZED	MAKE_HRESULT(SEVERITY_ERROR,FACILITY_WIN32,ERROR_NOT_READY)
#define STIERR_ALREADY_INITIALIZED	MAKE_HRESULT(SEVERITY_ERROR,FACILITY_WIN32,ERROR_ALREADY_INITIALIZED)
#define STIERR_DEVICE_LOCKED	MAKE_HRESULT(SEVERITY_ERROR,FACILITY_WIN32,ERROR_LOCK_VIOLATION)
#define STIERR_READONLY		E_ACCESSDENIED
#define STIERR_NOTINITIALIZED	E_ACCESSDENIED
#define STIERR_NEEDS_LOCK	MAKE_HRESULT(SEVERITY_ERROR,FACILITY_WIN32,ERROR_NOT_LOCKED)
#define STIERR_SHARING_VIOLATION	MAKE_HRESULT(SEVERITY_ERROR,FACILITY_WIN32,ERROR_SHARING_VIOLATION)
#define STIERR_HANDLEEXISTS	MAKE_HRESULT(SEVERITY_ERROR,FACILITY_WIN32,ERROR_ALREADY_EXISTS)
#define STIERR_INVALID_DEVICE_NAME	MAKE_HRESULT(SEVERITY_ERROR,FACILITY_WIN32,ERROR_INVALID_NAME)
#define STIERR_INVALID_HW_TYPE	MAKE_HRESULT(SEVERITY_ERROR,FACILITY_WIN32,ERROR_INVALID_DATA)
#define STIERR_NOEVENTS		MAKE_HRESULT(SEVERITY_ERROR,FACILITY_WIN32,ERROR_NO_MORE_ITEMS)
#define STIERR_DEVICE_NOTREADY	MAKE_HRESULT(SEVERITY_ERROR,FACILITY_WIN32,ERROR_NOT_READY)
