用命名对象来防止运行一个应用程序的多个实例
在main或WinMain函数中Create*函数创建一个命名的内核对象。 当Create*函数返回时, 调用GetLastError函数。 如果已经应用程序已经有一个实例在运行了, GetLastError就会返回ERROR_ALREADY_EXISTS。我的问题是,如果在调用Create*函数以前, 这个lasterror就已经是ERROR_ALREADY_EXISTS了。 那这次Create*如果没有返回ERROR_ALREADY_EXISTS的话, GetLastError会不会得到一个“过时了的” ERROR_ALREADY_EXISTS呢?
在main或WinMain函数中Create*函数创建一个命名的内核对象。 当Create*函数返回时, 调用GetLastError函数。 如果已经应用程序已经有一个实例在运行了, GetLastError就会返回ERROR_ALREADY_EXISTS。我的问题是,如果在调用Create*函数以前, 这个lasterror就已经是ERROR_ALREADY_EXISTS了。 那这次Create*如果没有返回ERROR_ALREADY_EXISTS的话, GetLastError会不会得到一个“过时了的” ERROR_ALREADY_EXISTS呢?
如果在此之间,其它函数没有出错,或者没有调用SetLastError,我觉得会得到ERROR_ALREADY_EXISTS
如果都返回成功了,那就不用去GetLastError了。
如果create……执行成功了,用GetLastError会得到执行成功的消息。GetLastError函数是返回最近一个函数的执行成功与否的消息。