Не все, что устанавливает значение GetLastError()
для неуспеха, является ошибкой. Важно сначала отличить errors от возвращаемого значения функции и изучить GetLastError()
, чтобы получить дополнительную информацию о виде ошибки .
Для сопоставлений, которые уже существуют, CreateFileMapping
документируется для возврата допустимого дескриптора и для установки значения GetLastError()
в ERROR_ALREADY_EXISTS
. В этом случае значение ошибки информационное : оно действительно для его проверки, если вас интересует, существует ли сопоставление, прежде чем вы его открыли, но это не ошибка. Вы обнаруживаете failure , проверяя возвращаемое значение для NULL. В противном случае вы просто продолжаете использовать ручку.
Постскриптум Если вы хотите убедиться, что раздел существует до открытия, вы можете использовать OpenFileMapping
, который не удастся для несуществующих разделов вместо создания нового.