CreateProcess succeeds, but GetLastError() returns access denied

后端 未结 2 1101
日久生厌
日久生厌 2021-01-15 21:26

I\'m having a little confusion due to conflicting return values from CreateProcess() and GetLastError(). When I use CreateProcess() in

相关标签:
2条回答
  • 2021-01-15 22:12

    GetLastError is only meaningful when the documentation states it is meaningful.

    GetLastError returns the Win32 thread last error set with SetLastError. Since functions are only supposed to set or clear the last error when it is documented that they do so, if that hasn't happened, the last error may well contain an earlier error which is not relevant.

    It is documented that CreateProcess will set the last error if it fails, not if it succeeds. So you should ignore it.

    0 讨论(0)
  • 2021-01-15 22:15

    From the documentation of GetLastError

    The Return Value section of the documentation for each function that sets the last-error code notes the conditions under which the function sets the last-error code. Most functions that set the thread's last-error code set it when they fail. However, some functions also set the last-error code when they succeed. [emphasis mine]

    I think you get the experienced outcome because, uppon success, CreateProcess does not set the error value GetLastError returns. Instead your call to GetLastError returns an error set by another function called earlier

    0 讨论(0)
提交回复
热议问题