#ifndef _STIERR_H
#define _STIERR_H

/* Still Image API error codes */

#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_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)

#endif /* _STIERR_H */
