Thursday, October 27, 2011

Securing Chickens and Eggs


I saw a question get posted to an internal discussion group that went something like this:

I have a console application which uses CredUICmdLinePromptForCredentials. How can I add support to allow a user to pipe a password from a file into my tool? For example:

type password.txt | myTool.exe /user:user1

Answer: You don't.

The Long Answer:
The whole purpose for CredUICmdLinePromptForCredentials, its entire reason for existence, is to provide users a slightly more secure mechanism for supplying private authorization information.

  • If a password is stored in clear text on your hard-drive, then it is not secure.
  • If a password is sent in clear text via the command shell's pipe/redirection mechanisms, then it is not secure.
  • If a password is cached somewhere (clear or obfuscated) that can inherently be used by an un-authorized person (replay attack), then it is not secure.

If you aren't attempting to be secure with a user's password, then there is no reason to use CredUICmdLinePromptForCredentials, just read the file or input stream yourself and be done with it.

Public Service Announcement: If you use one of the CredUI*PromptFor*Credential APIs, be sure to either nuke the password (SecureZeroMemory) or encrypt it (CryptProtectMemory) as soon as possible (i.e. immediately after the call and/or after any verification that needs to happen).


Now, the better question revolves around how one should secure credentials such that they can still be used in an automated process. Unfortunately this quickly degenerates into a philosophical question as computers are inherently insecure, especially if you have physical access to it (debuggers, physical analysis of hardware, etc. can expose your secrets). The issue becomes even more philosophical considering that the objective of the tool hasn't been scoped or discussed (and wasn't in the original post).

For the purpose of this (now philosophical) exercise, we assume that we are not on a single computer - as we are dealing with automation and want to distribute the credentials in a file. If we were on a single computer we might utilize the Credential Manager to help store this information locally.

To secure some chunk of data, we need to encode it. In order to decode the information we need a key. Unfortunately we now need to store the private key in a secure manner. Do we encode the key to secure it? If we fast-forward a bit, you can easily see that this quickly turns into a "which came first, the chicken or the egg" type of problem.

Since computers are insecure, the best place to store private information is not in a computer. The typical place is in a human. Now we've come full circle. In order to secure the file that contains a password, we need someone to remember a password (and people wonder why security is tricky). Now you can see that our philosophical exercise is flawed, so really the question is not "how do we secure the file", but "how secure is good enough?"

Saturday, October 22, 2011

Team Cohesion


Every year Microsoft sends out a survey which the execs and managers use to help get the pulse of the worker bees. One of the areas where our group didn't do as well as we would have liked was around inclusion / team cohesion. My manager asked me what I thought we could do in this area, and here are my generalized thoughts.


Common Goal and Purpose
            To start with, there must be an underlying goal which is understood and believed. If the goal is not clear and concise, then there is no coordinated direction. This leads to wasted work (if it isn't truly important to the vision) and marginalizes peoples' contributions or places greater rewards on other team members. Dissatisfaction and discord can also set in if the team doesn't think the goal is reachable or doesn't agree with its direction. The vision is the foundation which your team needs to rally behind and gets everyone marching in the same direction. Changes are needed if people don't believe or understand why their work is important. Often this can be helped by improving communication or cutting unnecessary features and focusing the team on what is important.


Communication
            Good communication is fundamental in ensuring everybody feels included, this means that decisions which impact team members must be understood and believed. Ensure that decisions are not created a vacuum, at the wrong level, or by the wrong people. This is where strong leaders and program managers pay off, they will help drive the features and make sure all the necessary players are informed and brought in on decisions. Additionally, small changes such as office layouts and organization chart optimizations can help foster easier coordination between the individuals who are working on related technologies.


Rewards and Motivation
            Exclusion is a sure way to alienate someone from the team. Recognition, cool projects, gifts, benefits, etc. all need to be appropriately spread around. Militaries across the world have all used unit citations to help build a collective level of pride in a team. It doesn't matter how much an individual contributed (if at all) because, when recognized, everyone in the unit got them. Individual rewards have their time and place but they can weaken the overall team cohesion. Also, make sure that events, entertainment, food options, etc. are all open and inclusive. You definitely don't want a morale event to do more harm than good by alienating the very individuals you most desperately need to improve the morale on.


All of these things can make an impact to how tightly an individual will be integrated within an organization; all it takes is a good leader to help kick some of these into place. But keep in mind that one of the underlying concepts here is empowerment. Do you encourage the employee to make a meaningful difference, or are they just tools to get a job done?

Wednesday, September 28, 2011

HRESULTS: FACILITY_ONLINE_ID


This is page contains raw error codes. It is meant as a software developer reference, not a customer support site.

CodeHRESULTDescription#define
10x8A020001 Authentication target is invalid or not configured correctly. ONL_E_INVALID_AUTHENTICATION_TARGET
20x8A020002 Your application cannot get the Online Id properties due to the Terms of Use accepted by the user. ONL_E_ACCESS_DENIED_BY_TOU
30x8A020003 Application is incorrectly configured or not yet enabled. ONL_E_INVALID_APPLICATION

HRESULTS: FACILITY_DEFRAG


This is page contains raw error codes. It is meant as a software developer reference, not a customer support site.

CodeHRESULTDescription#define
10x99000001 E_TOCPARSER_INVALIDASFFILE
20x99000002 E_TOCPARSER_INVALIDRIFFFILE

HRESULTS: FACILITY_D2D


This is page contains raw error codes. It is meant as a software developer reference, not a customer support site.

CodeHRESULTDescription#define
10x88990001 The object was not in the correct state to process the method. D2DERR_WRONG_STATE
20x88990002 The object has not yet been initialized. D2DERR_NOT_INITIALIZED
30x88990003 The requested operation is not supported. D2DERR_UNSUPPORTED_OPERATION
40x88990004 The geometry scanner failed to process the data. D2DERR_SCANNER_FAILED
50x88990005 Direct2D could not access the screen. D2DERR_SCREEN_ACCESS_DENIED
60x88990006 A valid display state could not be determined. D2DERR_DISPLAY_STATE_INVALID
70x88990007 The supplied vector is zero. D2DERR_ZERO_VECTOR
80x88990008 An internal error (Direct2D bug) occurred. On checked builds, we would assert. The application should close this instance of Direct2D and should consider restarting its process. D2DERR_INTERNAL_ERROR
90x88990009 The display format Direct2D needs to render is not supported by the hardware device. D2DERR_DISPLAY_FORMAT_NOT_SUPPORTED
100x8899000A A call to this method is invalid. D2DERR_INVALID_CALL
110x8899000B No hardware rendering device is available for this operation. D2DERR_NO_HARDWARE_DEVICE
120x8899000C There has been a presentation error that may be recoverable. The caller needs to recreate, rerender the entire frame, and reattempt present. D2DERR_RECREATE_TARGET
130x8899000D Shader construction failed because it was too complex. D2DERR_TOO_MANY_SHADER_ELEMENTS
140x8899000E Shader compilation failed. D2DERR_SHADER_COMPILE_FAILED
150x8899000F Requested DirectX surface size exceeded maximum texture size. D2DERR_MAX_TEXTURE_SIZE_EXCEEDED
160x88990010 The requested Direct2D version is not supported. D2DERR_UNSUPPORTED_VERSION
170x88990011 Invalid number. D2DERR_BAD_NUMBER
180x88990012 Objects used together must be created from the same factory instance. D2DERR_WRONG_FACTORY
190x88990013 A layer resource can only be in use once at any point in time. D2DERR_LAYER_ALREADY_IN_USE
200x88990014 The pop call did not match the corresponding push call. D2DERR_POP_CALL_DID_NOT_MATCH_PUSH
210x88990015 The resource was realized on the wrong render target. D2DERR_WRONG_RESOURCE_DOMAIN
220x88990016 The push and pop calls were unbalanced. D2DERR_PUSH_POP_UNBALANCED
230x88990017 Attempt to copy from a render target while a layer or clip rect is applied. D2DERR_RENDER_TARGET_HAS_LAYER_OR_CLIPRECT
240x88990018 The brush types are incompatible for the call. D2DERR_INCOMPATIBLE_BRUSH_TYPES
250x88990019 An unknown win32 failure occurred. D2DERR_WIN32_ERROR
260x8899001A The render target is not compatible with GDI. D2DERR_TARGET_NOT_GDI_COMPATIBLE
270x8899001B A text client drawing effect object is of the wrong type. D2DERR_TEXT_EFFECT_IS_WRONG_TYPE
280x8899001C The application is holding a reference to the IDWriteTextRenderer interface after the corresponding DrawText or DrawTextLayout call has returned. The IDWriteTextRenderer instance will be invalid. D2DERR_TEXT_RENDERER_NOT_RELEASED
290x8899001D The requested size is larger than the guaranteed supported texture size at the Direct3D device's current feature level. D2DERR_EXCEEDS_MAX_BITMAP_SIZE
300x8899001E There was a configuration error in the graph. D2DERR_INVALID_GRAPH_CONFIGURATION
310x8899001F There was a internal configuration error in the graph. D2DERR_INVALID_INTERNAL_GRAPH_CONFIGURATION
320x88990020 There was a cycle in the graph. D2DERR_CYCLIC_GRAPH
330x88990021 Cannot draw with a bitmap that has the D2D1_BITMAP_OPTIONS_CANNOT_DRAW option. D2DERR_BITMAP_CANNOT_DRAW
340x88990022 The operation cannot complete while there are outstanding references to the target bitmap. D2DERR_OUTSTANDING_BITMAP_REFERENCES
350x88990023 The operation failed because the original target is not currently bound as a target. D2DERR_ORIGINAL_TARGET_NOT_BOUND
360x88990024 Cannot set the image as a target because it is either an effect or is a bitmap that does not have the D2D1_BITMAP_OPTIONS_TARGET flag set. D2DERR_INVALID_TARGET
370x88990025 Cannot draw with a bitmap that is currently bound as the target bitmap. D2DERR_BITMAP_BOUND_AS_TARGET
380x88990026 D3D Device does not have sufficient capabilities to perform the requested action. D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES
390x88990027 The graph could not be rendered with the context's current tiling settings. D2DERR_INTERMEDIATE_TOO_LARGE
400x88990028 The CLSID provided to Unregister did not correspond to a registered effect. D2DERR_EFFECT_IS_NOT_REGISTERED
410x88990029 The specified property does not exist. D2DERR_INVALID_PROPERTY
420x8899002A The specified sub-property does not exist. D2DERR_NO_SUBPROPERTIES
430x8899002B AddPage or Close called after print job is already closed. D2DERR_PRINT_JOB_CLOSED
440x8899002C Error during print control creation. Indicates that none of the package target types (representing printer formats) are supported by Direct2D print control. D2DERR_PRINT_FORMAT_NOT_SUPPORTED
450x8899002D An effect attempted to use a transform with too many inputs. D2DERR_TOO_MANY_TRANSFORM_INPUTS

HRESULTS: FACILITY_DWRITE (898)


This is page contains raw error codes. It is meant as a software developer reference, not a customer support site.

Edit: 6/7/2015 - Updated from the Windows10 SDK.


MILERR_OBJECTBUSY - 0x88980001 - (1)
MILERR_OBJECTBUSY
MILERR_INSUFFICIENTBUFFER - 0x88980002 - (2)
MILERR_INSUFFICIENTBUFFER
MILERR_WIN32ERROR - 0x88980003 - (3)
MILERR_WIN32ERROR
MILERR_SCANNER_FAILED - 0x88980004 - (4)
MILERR_SCANNER_FAILED
MILERR_SCREENACCESSDENIED - 0x88980005 - (5)
MILERR_SCREENACCESSDENIED
MILERR_DISPLAYSTATEINVALID - 0x88980006 - (6)
MILERR_DISPLAYSTATEINVALID
MILERR_NONINVERTIBLEMATRIX - 0x88980007 - (7)
MILERR_NONINVERTIBLEMATRIX
MILERR_ZEROVECTOR - 0x88980008 - (8)
MILERR_ZEROVECTOR
MILERR_TERMINATED - 0x88980009 - (9)
MILERR_TERMINATED
MILERR_BADNUMBER - 0x8898000A - (10)
MILERR_BADNUMBER
MILERR_INTERNALERROR - 0x88980080 - (128)
An internal error (MIL bug) occurred. On checked builds, an assert would be raised.
MILERR_DISPLAYFORMATNOTSUPPORTED - 0x88980084 - (132)
The display format we need to render is not supported by the hardware device.
MILERR_INVALIDCALL - 0x88980085 - (133)
A call to this method is invalid.
MILERR_ALREADYLOCKED - 0x88980086 - (134)
Lock attempted on an already locked object.
MILERR_NOTLOCKED - 0x88980087 - (135)
Unlock attempted on an unlocked object.
MILERR_DEVICECANNOTRENDERTEXT - 0x88980088 - (136)
No algorithm avaliable to render text with this device
MILERR_GLYPHBITMAPMISSED - 0x88980089 - (137)
Some glyph bitmaps, required for glyph run rendering, are not contained in glyph cache.
MILERR_MALFORMEDGLYPHCACHE - 0x8898008A - (138)
Some glyph bitmaps in glyph cache are unexpectedly big.
MILERR_GENERIC_IGNORE - 0x8898008B - (139)
Marker error for known Win32 errors that are currently being ignored by the compositor. This is to avoid returning S_OK when an error has occurred, but still unwind the stack in the correct location.
MILERR_MALFORMED_GUIDELINE_DATA - 0x8898008C - (140)
Guideline coordinates are not sorted properly or contain NaNs.
MILERR_NO_HARDWARE_DEVICE - 0x8898008D - (141)
No HW rendering device is available for this operation.
MILERR_NEED_RECREATE_AND_PRESENT - 0x8898008E - (142)
There has been a presentation error that may be recoverable. The caller needs to recreate, rerender the entire frame, and reattempt present. There are two known case for this: 1) D3D Driver Internal error 2) D3D E_FAIL 2a) Unknown root cause b) When resizing too quickly for DWM and D3D stay in sync
MILERR_ALREADY_INITIALIZED - 0x8898008F - (143)
The object has already been initialized.
MILERR_MISMATCHED_SIZE - 0x88980090 - (144)
The size of the object does not match the expected size.
MILERR_NO_REDIRECTION_SURFACE_AVAILABLE - 0x88980091 - (145)
No Redirection surface available.
MILERR_REMOTING_NOT_SUPPORTED - 0x88980092 - (146)
Remoting of this content is not supported.
MILERR_QUEUED_PRESENT_NOT_SUPPORTED - 0x88980093 - (147)
Queued Presents are not supported.
MILERR_NOT_QUEUING_PRESENTS - 0x88980094 - (148)
Queued Presents are not being used.
MILERR_NO_REDIRECTION_SURFACE_RETRY_LATER - 0x88980095 - (149)
No redirection surface was available. Caller should retry the call.
MILERR_TOOMANYSHADERELEMNTS - 0x88980096 - (150)
Shader construction failed because it was too complex.
MILERR_MROW_READLOCK_FAILED - 0x88980097 - (151)
MROW attempt to get a read lock failed.
MILERR_MROW_UPDATE_FAILED - 0x88980098 - (152)
MROW attempt to update the data failed because another update was outstanding.
MILERR_SHADER_COMPILE_FAILED - 0x88980099 - (153)
Shader compilation failed.
MILERR_MAX_TEXTURE_SIZE_EXCEEDED - 0x8898009A - (154)
Requested DX redirection surface size exceeded maximum texture size.
MILERR_QPC_TIME_WENT_BACKWARD - 0x8898009B - (155)
QueryPerformanceCounter returned a time in the past.
MILERR_DXGI_ENUMERATION_OUT_OF_SYNC - 0x8898009D - (157)
Primary Display device returned an invalid refresh rate.
MILERR_ADAPTER_NOT_FOUND - 0x8898009E - (158)
DWM can not find the adapter specified by the LUID.
MILERR_COLORSPACE_NOT_SUPPORTED - 0x8898009F - (159)
The requested bitmap color space is not supported.
MILERR_PREFILTER_NOT_SUPPORTED - 0x889800A0 - (160)
The requested bitmap pre-filtering state is not supported.
MILERR_DISPLAYID_ACCESS_DENIED - 0x889800A1 - (161)
Access is denied to the requested bitmap for the specified display id.
UCEERR_INVALIDPACKETHEADER - 0x88980400 - (1024)
UCEERR_INVALIDPACKETHEADER
UCEERR_UNKNOWNPACKET - 0x88980401 - (1025)
UCEERR_UNKNOWNPACKET
UCEERR_ILLEGALPACKET - 0x88980402 - (1026)
UCEERR_ILLEGALPACKET
UCEERR_MALFORMEDPACKET - 0x88980403 - (1027)
UCEERR_MALFORMEDPACKET
UCEERR_ILLEGALHANDLE - 0x88980404 - (1028)
UCEERR_ILLEGALHANDLE
UCEERR_HANDLELOOKUPFAILED - 0x88980405 - (1029)
UCEERR_HANDLELOOKUPFAILED
UCEERR_RENDERTHREADFAILURE - 0x88980406 - (1030)
UCEERR_RENDERTHREADFAILURE
UCEERR_CTXSTACKFRSTTARGETNULL - 0x88980407 - (1031)
UCEERR_CTXSTACKFRSTTARGETNULL
UCEERR_CONNECTIONIDLOOKUPFAILED - 0x88980408 - (1032)
UCEERR_CONNECTIONIDLOOKUPFAILED
UCEERR_BLOCKSFULL - 0x88980409 - (1033)
UCEERR_BLOCKSFULL
UCEERR_MEMORYFAILURE - 0x8898040A - (1034)
UCEERR_MEMORYFAILURE
UCEERR_PACKETRECORDOUTOFRANGE - 0x8898040B - (1035)
UCEERR_PACKETRECORDOUTOFRANGE
UCEERR_ILLEGALRECORDTYPE - 0x8898040C - (1036)
UCEERR_ILLEGALRECORDTYPE
UCEERR_OUTOFHANDLES - 0x8898040D - (1037)
UCEERR_OUTOFHANDLES
UCEERR_UNCHANGABLE_UPDATE_ATTEMPTED - 0x8898040E - (1038)
UCEERR_UNCHANGABLE_UPDATE_ATTEMPTED
UCEERR_NO_MULTIPLE_WORKER_THREADS - 0x8898040F - (1039)
UCEERR_NO_MULTIPLE_WORKER_THREADS
UCEERR_REMOTINGNOTSUPPORTED - 0x88980410 - (1040)
UCEERR_REMOTINGNOTSUPPORTED
UCEERR_MISSINGENDCOMMAND - 0x88980411 - (1041)
UCEERR_MISSINGENDCOMMAND
UCEERR_MISSINGBEGINCOMMAND - 0x88980412 - (1042)
UCEERR_MISSINGBEGINCOMMAND
UCEERR_CHANNELSYNCTIMEDOUT - 0x88980413 - (1043)
UCEERR_CHANNELSYNCTIMEDOUT
UCEERR_CHANNELSYNCABANDONED - 0x88980414 - (1044)
UCEERR_CHANNELSYNCABANDONED
UCEERR_UNSUPPORTEDTRANSPORTVERSION - 0x88980415 - (1045)
UCEERR_UNSUPPORTEDTRANSPORTVERSION
UCEERR_TRANSPORTUNAVAILABLE - 0x88980416 - (1046)
UCEERR_TRANSPORTUNAVAILABLE
UCEERR_FEEDBACK_UNSUPPORTED - 0x88980417 - (1047)
UCEERR_FEEDBACK_UNSUPPORTED
UCEERR_COMMANDTRANSPORTDENIED - 0x88980418 - (1048)
UCEERR_COMMANDTRANSPORTDENIED
UCEERR_GRAPHICSSTREAMUNAVAILABLE - 0x88980419 - (1049)
UCEERR_GRAPHICSSTREAMUNAVAILABLE
UCEERR_GRAPHICSSTREAMALREADYOPEN - 0x88980420 - (1056)
UCEERR_GRAPHICSSTREAMALREADYOPEN
UCEERR_TRANSPORTDISCONNECTED - 0x88980421 - (1057)
UCEERR_TRANSPORTDISCONNECTED
UCEERR_TRANSPORTOVERLOADED - 0x88980422 - (1058)
UCEERR_TRANSPORTOVERLOADED
UCEERR_PARTITION_ZOMBIED - 0x88980423 - (1059)
UCEERR_PARTITION_ZOMBIED
MILAVERR_NOCLOCK - 0x88980500 - (1280)
MILAVERR_NOCLOCK
MILAVERR_NOMEDIATYPE - 0x88980501 - (1281)
MILAVERR_NOMEDIATYPE
MILAVERR_NOVIDEOMIXER - 0x88980502 - (1282)
MILAVERR_NOVIDEOMIXER
MILAVERR_NOVIDEOPRESENTER - 0x88980503 - (1283)
MILAVERR_NOVIDEOPRESENTER
MILAVERR_NOREADYFRAMES - 0x88980504 - (1284)
MILAVERR_NOREADYFRAMES
MILAVERR_MODULENOTLOADED - 0x88980505 - (1285)
MILAVERR_MODULENOTLOADED
MILAVERR_WMPFACTORYNOTREGISTERED - 0x88980506 - (1286)
MILAVERR_WMPFACTORYNOTREGISTERED
MILAVERR_INVALIDWMPVERSION - 0x88980507 - (1287)
MILAVERR_INVALIDWMPVERSION
MILAVERR_INSUFFICIENTVIDEORESOURCES - 0x88980508 - (1288)
MILAVERR_INSUFFICIENTVIDEORESOURCES
MILAVERR_VIDEOACCELERATIONNOTAVAILABLE - 0x88980509 - (1289)
MILAVERR_VIDEOACCELERATIONNOTAVAILABLE
MILAVERR_REQUESTEDTEXTURETOOBIG - 0x8898050A - (1290)
MILAVERR_REQUESTEDTEXTURETOOBIG
MILAVERR_SEEKFAILED - 0x8898050B - (1291)
MILAVERR_SEEKFAILED
MILAVERR_UNEXPECTEDWMPFAILURE - 0x8898050C - (1292)
MILAVERR_UNEXPECTEDWMPFAILURE
MILAVERR_MEDIAPLAYERCLOSED - 0x8898050D - (1293)
MILAVERR_MEDIAPLAYERCLOSED
MILAVERR_UNKNOWNHARDWAREERROR - 0x8898050E - (1294)
MILAVERR_UNKNOWNHARDWAREERROR
MILEFFECTSERR_UNKNOWNPROPERTY - 0x8898060E - (1550)
MILEFFECTSERR_UNKNOWNPROPERTY
MILEFFECTSERR_EFFECTNOTPARTOFGROUP - 0x8898060F - (1551)
MILEFFECTSERR_EFFECTNOTPARTOFGROUP
MILEFFECTSERR_NOINPUTSOURCEATTACHED - 0x88980610 - (1552)
MILEFFECTSERR_NOINPUTSOURCEATTACHED
MILEFFECTSERR_CONNECTORNOTCONNECTED - 0x88980611 - (1553)
MILEFFECTSERR_CONNECTORNOTCONNECTED
MILEFFECTSERR_CONNECTORNOTASSOCIATEDWITHEFFECT - 0x88980612 - (1554)
MILEFFECTSERR_CONNECTORNOTASSOCIATEDWITHEFFECT
MILEFFECTSERR_RESERVED - 0x88980613 - (1555)
MILEFFECTSERR_RESERVED
MILEFFECTSERR_CYCLEDETECTED - 0x88980614 - (1556)
MILEFFECTSERR_CYCLEDETECTED
MILEFFECTSERR_EFFECTINMORETHANONEGRAPH - 0x88980615 - (1557)
MILEFFECTSERR_EFFECTINMORETHANONEGRAPH
MILEFFECTSERR_EFFECTALREADYINAGRAPH - 0x88980616 - (1558)
MILEFFECTSERR_EFFECTALREADYINAGRAPH
MILEFFECTSERR_EFFECTHASNOCHILDREN - 0x88980617 - (1559)
MILEFFECTSERR_EFFECTHASNOCHILDREN
MILEFFECTSERR_ALREADYATTACHEDTOLISTENER - 0x88980618 - (1560)
MILEFFECTSERR_ALREADYATTACHEDTOLISTENER
MILEFFECTSERR_NOTAFFINETRANSFORM - 0x88980619 - (1561)
MILEFFECTSERR_NOTAFFINETRANSFORM
MILEFFECTSERR_EMPTYBOUNDS - 0x8898061A - (1562)
MILEFFECTSERR_EMPTYBOUNDS
MILEFFECTSERR_OUTPUTSIZETOOLARGE - 0x8898061B - (1563)
MILEFFECTSERR_OUTPUTSIZETOOLARGE
DWMERR_STATE_TRANSITION_FAILED - 0x88980700 - (1792)
DWMERR_STATE_TRANSITION_FAILED
DWMERR_THEME_FAILED - 0x88980701 - (1793)
DWMERR_THEME_FAILED
DWMERR_CATASTROPHIC_FAILURE - 0x88980702 - (1794)
DWMERR_CATASTROPHIC_FAILURE
DCOMPOSITION_ERROR_WINDOW_ALREADY_COMPOSED - 0x88980800 - (2048)
DCOMPOSITION_ERROR_WINDOW_ALREADY_COMPOSED
DCOMPOSITION_ERROR_SURFACE_BEING_RENDERED - 0x88980801 - (2049)
DCOMPOSITION_ERROR_SURFACE_BEING_RENDERED
DCOMPOSITION_ERROR_SURFACE_NOT_BEING_RENDERED - 0x88980802 - (2050)
DCOMPOSITION_ERROR_SURFACE_NOT_BEING_RENDERED
WINCODEC_ERR_WRONGSTATE - 0x88982F04 - (12036)
The codec is in the wrong state.
WINCODEC_ERR_VALUEOUTOFRANGE - 0x88982F05 - (12037)
The value is out of range.
WINCODEC_ERR_UNKNOWNIMAGEFORMAT - 0x88982F07 - (12039)
The image format is unknown.
WINCODEC_ERR_UNSUPPORTEDVERSION - 0x88982F0B - (12043)
The SDK version is unsupported.
WINCODEC_ERR_NOTINITIALIZED - 0x88982F0C - (12044)
The component is not initialized.
WINCODEC_ERR_ALREADYLOCKED - 0x88982F0D - (12045)
There is already an outstanding read or write lock.
WINCODEC_ERR_PROPERTYNOTFOUND - 0x88982F40 - (12096)
The specified bitmap property cannot be found.
WINCODEC_ERR_PROPERTYNOTSUPPORTED - 0x88982F41 - (12097)
The bitmap codec does not support the bitmap property.
WINCODEC_ERR_PROPERTYSIZE - 0x88982F42 - (12098)
The bitmap property size is invalid.
WINCODEC_ERR_CODECPRESENT - 0x88982F43 - (12099)
An unknown error has occurred.
WINCODEC_ERR_CODECNOTHUMBNAIL - 0x88982F44 - (12100)
The bitmap codec does not support a thumbnail.
WINCODEC_ERR_PALETTEUNAVAILABLE - 0x88982F45 - (12101)
The bitmap palette is unavailable.
WINCODEC_ERR_CODECTOOMANYSCANLINES - 0x88982F46 - (12102)
Too many scanlines were requested.
WINCODEC_ERR_INTERNALERROR - 0x88982F48 - (12104)
An internal error occurred.
WINCODEC_ERR_SOURCERECTDOESNOTMATCHDIMENSIONS - 0x88982F49 - (12105)
The bitmap bounds do not match the bitmap dimensions.
WINCODEC_ERR_COMPONENTNOTFOUND - 0x88982F50 - (12112)
The component cannot be found.
WINCODEC_ERR_IMAGESIZEOUTOFRANGE - 0x88982F51 - (12113)
The bitmap size is outside the valid range.
WINCODEC_ERR_TOOMUCHMETADATA - 0x88982F52 - (12114)
There is too much metadata to be written to the bitmap.
WINCODEC_ERR_BADIMAGE - 0x88982F60 - (12128)
The image is unrecognized.
WINCODEC_ERR_BADHEADER - 0x88982F61 - (12129)
The image header is unrecognized.
WINCODEC_ERR_FRAMEMISSING - 0x88982F62 - (12130)
The bitmap frame is missing.
WINCODEC_ERR_BADMETADATAHEADER - 0x88982F63 - (12131)
The image metadata header is unrecognized.
WINCODEC_ERR_BADSTREAMDATA - 0x88982F70 - (12144)
The stream data is unrecognized.
WINCODEC_ERR_STREAMWRITE - 0x88982F71 - (12145)
Failed to write to the stream.
WINCODEC_ERR_STREAMREAD - 0x88982F72 - (12146)
Failed to read from the stream.
WINCODEC_ERR_STREAMNOTAVAILABLE - 0x88982F73 - (12147)
The stream is not available.
WINCODEC_ERR_UNSUPPORTEDPIXELFORMAT - 0x88982F80 - (12160)
The bitmap pixel format is unsupported.
WINCODEC_ERR_UNSUPPORTEDOPERATION - 0x88982F81 - (12161)
The operation is unsupported.
WINCODEC_ERR_INVALIDREGISTRATION - 0x88982F8A - (12170)
The component registration is invalid.
WINCODEC_ERR_COMPONENTINITIALIZEFAILURE - 0x88982F8B - (12171)
The component initialization has failed.
WINCODEC_ERR_INSUFFICIENTBUFFER - 0x88982F8C - (12172)
The buffer allocated is insufficient.
WINCODEC_ERR_DUPLICATEMETADATAPRESENT - 0x88982F8D - (12173)
Duplicate metadata is present.
WINCODEC_ERR_PROPERTYUNEXPECTEDTYPE - 0x88982F8E - (12174)
The bitmap property type is unexpected.
WINCODEC_ERR_UNEXPECTEDSIZE - 0x88982F8F - (12175)
The size is unexpected.
WINCODEC_ERR_INVALIDQUERYREQUEST - 0x88982F90 - (12176)
The property query is invalid.
WINCODEC_ERR_UNEXPECTEDMETADATATYPE - 0x88982F91 - (12177)
The metadata type is unexpected.
WINCODEC_ERR_REQUESTONLYVALIDATMETADATAROOT - 0x88982F92 - (12178)
The specified bitmap property is only valid at root level.
WINCODEC_ERR_INVALIDQUERYCHARACTER - 0x88982F93 - (12179)
The query string contains an invalid character.
WINCODEC_ERR_WIN32ERROR - 0x88982F94 - (12180)
Windows Codecs received an error from the Win32 system.
WINCODEC_ERR_INVALIDPROGRESSIVELEVEL - 0x88982F95 - (12181)
The requested level of detail is not present.
WINCODEC_ERR_INVALIDJPEGSCANINDEX - 0x88982F96 - (12182)
The scan index is invalid.
DWRITE_E_FILEFORMAT - 0x88985000 - (20480)
Indicates an error in an input file such as a font file.
DWRITE_E_UNEXPECTED - 0x88985001 - (20481)
Indicates an error originating in DirectWrite code, which is not expected to occur but is safe to recover from.
DWRITE_E_NOFONT - 0x88985002 - (20482)
Indicates the specified font does not exist.
DWRITE_E_FILENOTFOUND - 0x88985003 - (20483)
A font file could not be opened because the file, directory, network location, drive, or other storage location does not exist or is unavailable.
DWRITE_E_FILEACCESS - 0x88985004 - (20484)
A font file exists but could not be opened due to access denied, sharing violation, or similar error.
DWRITE_E_FONTCOLLECTIONOBSOLETE - 0x88985005 - (20485)
A font collection is obsolete due to changes in the system.
DWRITE_E_ALREADYREGISTERED - 0x88985006 - (20486)
The given interface is already registered.
DWRITE_E_CACHEFORMAT - 0x88985007 - (20487)
The font cache contains invalid data.
DWRITE_E_CACHEVERSION - 0x88985008 - (20488)
A font cache file corresponds to a different version of DirectWrite.
DWRITE_E_UNSUPPORTEDOPERATION - 0x88985009 - (20489)
The operation is not supported for this type of font.
DWRITE_E_TEXTRENDERERINCOMPATIBLE - 0x8898500A - (20490)
The version of the text renderer interface is not compatible.
DWRITE_E_FLOWDIRECTIONCONFLICTS - 0x8898500B - (20491)
The flow direction conflicts with the reading direction. They must be perpendicular to each other.
DWRITE_E_NOCOLOR - 0x8898500C - (20492)
The font or glyph run does not contain any colored glyphs.
DWRITE_E_REMOTEFONT - 0x8898500D - (20493)

DWRITE_E_DOWNLOADCANCELLED - 0x8898500E - (20494)

DWRITE_E_DOWNLOADFAILED - 0x8898500F - (20495)

DWRITE_E_TOOMANYDOWNLOADS - 0x88985010 - (20496)



HRESULTS: FACILITY_DIRECT3D11


This is page contains raw error codes. It is meant as a software developer reference, not a customer support site.

CodeHRESULTDescription#define
10x887C0001 The application has exceeded the maximum number of unique state objects per Direct3D device. The limit is 4096 for feature levels up to 11.1. D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS
20x887C0002 The specified file was not found. D3D11_ERROR_FILE_NOT_FOUND
30x887C0003 The application has exceeded the maximum number of unique view objects per Direct3D device. The limit is 2^20 for feature levels up to 11.1. D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS
40x887C0004 The application's first call per command list to Map on a deferred context did not use D3D11_MAP_WRITE_DISCARD. D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD