Вот интересует такой вопрос господа, желательно с обоснованием или примерами. Как правильнее поступать при проверке значений возвращаемых кернел функциями. Использовать макрос NT_SUCCESS за исключением некоторых случаев, например с xxWait-функциями. Или же наоборот, проверять только == STATUS_SUCCESS, а NT_SUCCESS использовать в специфичных случаях.
0x56 Правильно использовать макрос NT_SUCCESS(...) Объясняю почему - функция может вернуть какое-нибудь положительное значение и это означает что она завершилась успешно, а значение может быть дополнительным информативным признаком чего-то там. Посмотри как раскрывается макрос - все станет ясно. Ответ на твой вопрос есть в MSDN: http://msdn2.microsoft.com/en-us/library/aa489609.aspx
Deyton Хорошо. Там далее приводятся 3 примера: IoRegisterDeviceInterface - STATUS_OBJECT_NAME_EXISTS ZwEnumerateKey - STATUS_NO_MORE_ENTRIES и даже пример где NT_SUCCESS или NT_ERROR могут не дать правильного результата Листаю наугад функции: т.е. или STATUS_SUCCESS или ошибку Поэтому я все же немного сомневаюсь в целесообразности использования его повсюду. А проверка таких статусов как STATUS_NO_MORE_ENTRIES, STATUS_OBJECT_NAME_EXISTS по моему и так подразумевается в контексте использования соотв. функций. Может у когото есть какие-то еще доводы. P.S. Код (Text): ZwOpenProcess returns an NTSTATUS value. расплывчатое что-то попалось
0x56, ты пытаешься все функции мерить одним мерилом. Это неправильно, т.к. у каждой функции свои особенности/специфика. Чтобы правильно интерпретировать возвращаемое значение, необходимо изучить её описание, там перечислены все возможные результаты.