Форум программистов, компьютерный форум, киберфорум
Pure Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/48: Рейтинг темы: голосов - 48, средняя оценка - 4.69
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10

Проверка Windows на подлинность (локальная)

30.04.2021, 13:32. Показов 10414. Ответов 94

Студворк — интернет-сервис помощи студентам
Начиная с Windows 7 есть функция для проверки подлинности системы - SLIsGenuineLocalEx.
Проверка проводится локально.
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
;https://docs.microsoft.com/en-us/windows/win32/api/slpublic/nf-slpublic-slisgenuinelocalex
 
#SL_GEN_STATE_IS_GENUINE = 0
 
 hDll = OpenLibrary(#PB_Any, "sppc.dll")    
If hDll 
    *SLIsGenuineLocal = GetFunction(hDll, "SLIsGenuineLocalEx")
    If *SLIsGenuineLocal
    If CallFunctionFast(*SLIsGenuineLocal, ?IID_NAME, 0, @test) = #S_OK
            If test = #SL_GEN_STATE_IS_GENUINE
               MessageRequester("Поздравляю! ", "Ваша Windows считается подлинной.", #PB_MessageRequester_Info)
            Else
               MessageRequester("Внимание! ",  "Ваша Windows не прошла проверку подлинности.", #PB_MessageRequester_Warning)
            EndIf
        EndIf
    EndIf    
    CloseLibrary(hDll)
  Else
    
   MessageRequester("Внимание! ",  "Ваша Windows немного устарела для этой проверки.", #PB_MessageRequester_Warning)  
  EndIf
  
  DataSection 
  IID_NAME:
  Data.l $55c92734
  Data.w $d682, $4d71
  Data.b $98, $3e, $d6, $ec, $3f, $16, $05, $9f
 EndDataSection
Проверяйте, тестируйте:
Вложения
Тип файла: zip genuine.zip (3.3 Кб, 25 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.04.2021, 13:32
Ответы с готовыми решениями:

Проверка Windows на подлинность
Добрый день. Подскажите как проверить Windows (любую) - лицензионная она или пиратская анонимно и без последствий для самой винды.

Проверка на подлинность Windows 7
Подскажите как быть, у меня стоит лицензия вин 7, через некоторое время, у меня был троян, изза которого слетела полностью винда, я...

Проверка на подлинность Windows 7
У меня стоит Windows 7. 64 разряда.Активирована.С недавних пор при открытии любого текстового документа выкидывает окно: Копия Windows...

94
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
01.05.2021, 20:16
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Тут написано, если не возвращается S_OK, то возвращается КОД ОШИБКИ. Не "положительный" статус, нет.
Мне не нужно знать код ошибки, это лишняя информация. Я просто выхожу из программы.
Ты сам читать умеешь? If the method fails, it returns an error code. - что тут написано? Теперь посмотри что такое HRESULT.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Какой практический смысл в остальных проверках если не прошла эта? Обоснуй.
Такой, что успех это не всегда = S_OK даже если в документации на функцию написано что функция возвращает в случае успеха S_OK. Это явно оговаривается в MSDN что список возвращаемых значений может быть абсолютно любым и не стоит полагаться на документацию, а использовать макросы SUCCEEDED и FAILED. Все.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
error code = выход из программы. Однозначно.
У тебя неверное представление о HRESULT. S_FALSE - это не ошибка, это также означает успешный вызов.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
01.05.2021, 20:33  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
S_FALSE - это не ошибка
Откуда вообще вы взяли S_FALSE ? Не такого в описании функции. Читайте MSDN и не выдумывайте всякий бред.
For a list of common error codes, see Common HRESULT Values.
Список распространенных кодов ошибок см. В разделе Общие значения HRESULT.
распространенных кодов ошибок. Если функция вернула ошибку, то дальше проверка не имеет смысла, это даже новичку понятно, ты то чего упираешься на очевидном факте?

The trick, ок. Если ты Дартаньян, а остальные не очень, то давай, покажи ссылку на код на любом ЯП из Интернета, где реально работа SLIsGenuineLocalEx продолжается и она выдает результат о подлинности Винды, если она вернула не S_OK, а что-то другое.

Если ты не единственный в Мире тру программист, то должен быть код, который подтверждает твои слова.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
01.05.2021, 20:56
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Откуда вообще вы взяли S_FALSE ?
Из MSDN я уже привел цитату про правильную обработку HRESULT кодов, но ты что-то пропускаешь и не отвечаешь на нее, а опять разводишь демагогию.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Список распространенных кодов ошибок см. В разделе Общие значения HRESULT.
распространенных кодов ошибок. Если функция вернула ошибку, то дальше проверка не имеет смысла, это даже новичку понятно, ты то чего упираешься на очевидном факте?
Что ты этим хочешь сказать? Ну в этом списке также есть S_OK, ну и что? Это тоже ошибка или что, я не пойму что ты этим постом мне хочешь показать. Никто с тобой не спорит про то что если ошибка то и проверять нету смысла, тебе говорят как правильно определять ошибку. Уже и код с MSDN привел в котором написано что сравнение в HRESULT с S_OK неверно. Кто тут упирается?

Цитата Сообщение от Pro_grammer Посмотреть сообщение
The trick, ок. Если ты Дартаньян, а остальные не очень, то давай, покажи ссылку на код на любом ЯП из Интернета, где реально работа SLIsGenuineLocalEx продолжается и она выдает результат о подлинности Винды, если она вернула не S_OK, а что-то другое.
Для чего мне искать какой-то код неизвестно от кого чтобы доказать кому-то в интернете что он делает что-то неправильно? Если я тебе приведу свой код - тебя это не устроит. Не веришь мне и тому что написано в MSDN - твое дело. Я свои утверждения основываю на сведениях из официальной документации. Более того, если не веришь мне и MSDN, объяви в tlb эту функцию и скомпилируй на VB6 бинарник и посмотри как он будет обрабатывать HRESULT значение.
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,009
Записей в блоге: 7
01.05.2021, 21:09
Цитата Сообщение от The trick Посмотреть сообщение
А что если она вернет еще какой-нибудь положительный статус?
Нужно четко следовать документации. В ней написано что в случае успеха вернет S_OK и кстати это число 0, а оно вовсе не положительное.
В описании функции нет ничего про макросы SUCCEEDED и FAILED. Вы на 100% уверены что они применимы к любой функции особенно если о них ни слова в описании?
Или предлагаете игнорировать описание функции?

Цитата Сообщение от Замабувараев Посмотреть сообщение
А если вернёт S_FALSE
Посмотрите внимательно как устроен код. Вообще это пример, а не законченная программа.

PS.
Честно не понимаю зачем Замабувараев и The trick своими придирками разводят оффтоп тем более что код написан согласно документации!
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
01.05.2021, 21:23
Цитата Сообщение от locm Посмотреть сообщение
Нужно четко следовать документации. В ней написано что в случае успеха вернет S_OK и кстати это число 0, а оно вовсе не положительное.
В описании функции нет ничего про макросы SUCCEEDED и FAILED. Вы на 100% уверены что они применимы к любой функции особенно если о них ни слова в описании?
Или предлагаете игнорировать описание функции?
Я уже скинул выше цитату из MSDN про обработку HRESULT кодов. В ней черным по белому написано что нельзя полагаться на коды из описания функций, а нужно использовать макросы SUCCEEDED и FAILED:
MSDN documentation often gives a list of specific error codes that a method might return. However, you should not consider these lists to be definitive. A method can always return an HRESULT value that is not listed in the documentation. Again, use the SUCCEEDED and FAILED macros.
// Wrong.
HRESULT hr = SomeFunction();
if (hr != S_OK)
{
printf("Error!\n"); // Bad. hr might be another success code.
}

// Right.
HRESULT hr = SomeFunction();
if (FAILED(hr))
{
printf("Error!\n");
}
Еще раз, будете с этим спорить?
Положительный в том контексте обозначало успешный, а не положительный в плане знака.

Цитата Сообщение от locm Посмотреть сообщение
Честно не понимаю зачем Замабувараев и The trick своими придирами разводят оффтоп тем более что код написан согласно документации!
Нет, вам показали на недочет в коде, а вы начинаете оффтопить и спорить как обычно.

Добавлено через 2 минуты
Цитата Сообщение от locm Посмотреть сообщение
Вы на 100% уверены что они применимы к любой функции особенно если о них ни слова в описании?
Да, уверены. Если бы функция возвращала бы что-нибудь другое, а не HRESULT о работе с которым в MSDN написано явно, тогда бы и разговора не было.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
01.05.2021, 21:24  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Ну в этом списке также есть S_OK, ну и что? Это тоже ошибка
Капец, дурдом какой то уже начался.
If the method succeeds, it returns S_OK.
Какая это ошибка? If the method succeeds, Успех это не ошибка, написано же.
А если не S_OK, то ошибка, тоже дальше написано.

Цитата Сообщение от The trick Посмотреть сообщение
Не веришь мне и тому что написано в MSDN
Извини, не признал крутого программиста современности.
Ты единственный, кто понял, как надо работать с SLIsGenuineLocalEx!
Покорнейше прошу меня простить. Не признал. Я не прав.
Цитата Сообщение от The trick Посмотреть сообщение
Если я тебе приведу свой код
Умоляю на коленях выложить тут правильный код, и всем в Интернете расскажу, что они были не правы, жестоко ошибались, проверяя успешное выполнение SLIsGenuineLocalEx на S_OK.
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,009
Записей в блоге: 7
01.05.2021, 21:36
Цитата Сообщение от The trick Посмотреть сообщение
// Wrong.
HRESULT hr = SomeFunction();
if (hr != S_OK)
{
printf("Error!\n"); // Bad. hr might be another success code.
}
В коде Pro_grammer проверяется чтобы был результат S_OK, а не <> S_OK. Это не совсем идентично в данном случае. Все сделано согласно документации. Хорошо, если считаете что код неправильный скажите в какой ситуации в этом коде условие будет верным, а функция выполнится с ошибкой.

Цитата Сообщение от The trick Посмотреть сообщение
Нет, вам показали на недочет в коде, а вы начинаете оффтопить и спорить как обычно.
Недочет? Код написан согласно описания функции? Скажите в какой ситуации он будет работать неправильно? Иначе вы просто придираетесь.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
01.05.2021, 21:39
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Капец, дурдом какой то уже начался.
If the method succeeds, it returns S_OK.
Какая это ошибка? If the method succeeds, Успех это не ошибка, написано же.
А если не S_OK, то ошибка, тоже дальше написано.
Ну а зачем ты мне приводишь список этот тогда как список ошибок? Что ты этим хотел сказать, ты ответь на вопрос, а не уходи от ответа.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Ты единственный, кто понял, как надо работать с SLIsGenuineLocalEx!
Не нужно иронизировать, если есть что ответить на цитату из MSDN, говори. Ну и не я тебе отписал об ошибке, тебе Замабувараев написал об этом.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Умоляю на коленях выложить тут правильный код, и всем в Интернете расскажу, что они были не правы, жестоко ошибались, проверяя успешное выполнение SLIsGenuineLocalEx на S_OK.
Тебе уже сказали как правильно сделать. Знаешь, есть большая группа людей которая тупо копипастит код и не разбирается в том как он работает, даже если он написан с ошибками. Для них это просто магия. Ну работает и работает вроде бы.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
01.05.2021, 21:45
Цитата Сообщение от locm Посмотреть сообщение
Линукс должна сообщить о подлинности винды?
Жжёте мужики! Просто жжёте!

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Проверяйте, тестируйте:


Вроде с трекера её сорвал, но ничё. Подлинная! Дядя билл может спать спокойно.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
01.05.2021, 21:49
Цитата Сообщение от locm Посмотреть сообщение
В коде Pro_grammer проверяется чтобы был результат S_OK, а не <> S_OK. Это не совсем идентично в данном случае.
Какая разница? Смысл в том что может быть возвращен любой другой положительный статус что и написано в теле условия в комментарии.

Цитата Сообщение от locm Посмотреть сообщение
Хорошо, если считаете что код неправильный скажите в какой ситуации в этом коде условие будет верным, а функция выполнится с ошибкой.
Нет, я уже написал что у него если функция вернет другой положительный статус то вызов будет обработан как ошибочный и ничего не выведется, хотя функция отработает успешно. Т.е. в точности наоборот как ты написал - функция отработает успешно, а условие будет неверным.

Цитата Сообщение от locm Посмотреть сообщение
Недочет? Код написан согласно описания функции? Скажите в какой ситуации он будет работать неправильно? Иначе вы просто придираетесь.
Уже написал. Почему ты тоже явно игнорируешь ту информацию из MSDN о правильной обработке HRESULT кодов? У вас какое-то фатальное неприятие информации или что?
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
01.05.2021, 21:54
Анатолий вроде хочет сказать, что это не применимо для всех случаев, потому что резулт
не всегда даст код ошибки. В данном же случае это всё на ответственности программиста и
вроде ничего криминального быть не должно, если там всего 2 вида т.е. 1 сукцесс и остальное сугубо ошибки.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
01.05.2021, 22:01  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Почему ты тоже явно игнорируешь ту информацию из MSDN о правильной обработке HRESULT кодов?
Это ты неверно толкуешь информацию.
Пытаешься общие правила притянуть на конкретную ситуацию, попросту натянуть сову на глобус.
Есть конкретное описание SLIsGenuineLocalEx в MSDN, где и близко нет того, о чем ты тут напридумывал.
Цитата Сообщение от The trick Посмотреть сообщение
если функция вернет другой положительный статус
Нет ни какого другого положительного статуса. Или S_OK или код ошибки. Это четко описано тут.
Замабувараев просто не разобрался в коде, т.к. не знает PureBasic. Ты ему поддакнул по привычке, а теперь выкручиваешься. Но дураков то тут нет, все читать умеют.

Добавлено через 1 минуту
Цитата Сообщение от Quiet Snow Посмотреть сообщение
там всего 2 вида т.е. 1 сукцесс и остальное сугубо ошибки.
Вот человек тоже сразу разобрался. Я же говорю, читать мы тут все умеем, дураков нет.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
01.05.2021, 22:05
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Я же говорю, читать мы тут все умеем, дураков нет.
Я бы на самом деле посмотрел есть ли там на PB вообще такой макроc FAILED.
Стада то стадами, но если это будет непреодолимым препятствием, то наверное без MSDN-а
лучше ничего не делать)))
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
01.05.2021, 22:05
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Это ты неверно толкуешь информацию.


Цитата Сообщение от Pro_grammer Посмотреть сообщение
Пытаешься общие правила притянуть на конкретную ситуацию, попросту натянуть сову на глобус.
Есть конкретное описание SLIsGenuineLocalEx в MSDN, где и близко нет того, о чем ты тут напридумывал.
Алё, проспись:
A method can always return an HRESULT value that is not listed in the documentation.
Читать умеешь?

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Нет ни какого другого положительного статуса. Или S_OK или код ошибки. Это четко описано тут.
Есть куча других статусов неописанных в функции которые могут быть возвращены.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Замабувараев просто не разобрался в коде, т.к. не знает PureBasic. Ты ему поддакнул по привычке, а теперь выкручиваешься.
Это ты не разобрался в том что тебе написали и начал плести чепуху об ошибках когда речь шла о статусе

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Но дураков то тут нет, все читать умеют.
Ну видимо есть
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
01.05.2021, 22:20
Ну и
Цитата Сообщение от Замабувараев Посмотреть сообщение
А вы зачем используете платформоспецифические вещи? Ваш кроссплатформенный язык не справляется со своей задачей?
Просто не всегда отдавая себе отчёт, что бесгеморной кросспалтформы не бывает. Т.е. совсем не бывает.
Тут то конечно платформозависимые вещи. Но что бы мы не пилили, даже универсальное. Всегда будут
нюансы и если их не оттестить - будет жопа и она случается часто у людей, кто берёт ТУПО чужие либы(1 ошибка)
слепо билдит на все платформы и плюёт на тестирование всёх платформ(2 ошибка).
Классический случай - нужно прогнать ВЕСЬ функционал своего софта, если он зависимый,
то разбить по критериям зависимости, разделить на максимально независимые группы и тестить.
Причём не важно это PB или другая среда. Везде будет жопа если не тестировать.
И ладно там на линуксе где кривые софтины, но под виндой когда, где процент пользователей
несоразмерно выше - тут как-бы надо понимать, что любой косяк он быстро вскрывается.

Цитата Сообщение от The trick Посмотреть сообщение
Есть куча других статусов неописанных в функции которые могут быть возвращены.
Расскажи уже какие, мне тоже интересно почитать. Меня больше интересует почему
Цитата Сообщение от The trick Посмотреть сообщение
not listed in the documentation.
Тут наверное вопросы уже не к программисту. Для программиста документация - всё.
Программист редко лезет в недокументированные вещи.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
01.05.2021, 22:31  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
If the method fails, it returns an error code.
"Если метод не работает, он возвращает код ошибки."
Цитата Сообщение от The trick Посмотреть сообщение
если функция вернет другой положительный статус
От куда ты придумал про другой положительный статус?
Написано без всяких условностей, если не S_OK, то ошибка.

Цитата Сообщение от The trick Посмотреть сообщение
Это ты не разобрался в том что тебе написали
Хорошо. Давай, покажи как ты это напишешь правильно, я с удовольствием поучусь:
Цитата Сообщение от Замабувараев Посмотреть сообщение
Успешность или неуспешность HRESULT следует проверять через SUCCEEDED и FAILED, а не непосредственным сравнением с константой S_OK.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
01.05.2021, 22:44
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Расскажи уже какие, мне тоже интересно почитать. Меня больше интересует почему
Знаешь как работают большинство функций возвращающих HRESULT? К примеру есть функция CoInitialize(), она вызывает кучу других функций которые также возвращают HRESULT и возвращает обычно то значение которое вернула последняя функция. Возьмем какой-нибудь билд в котором SLIsGenuineLocalEx к примеру получает какие-либо данные из реестра которая вернет к примеру SEC_I_LOCAL_LOGON. Может такое быть? Может. Данные в любом случае извлекутся. Либо завтра выпустят билд в котором эта функция будет возвращать S_FALSE которое будет означать какую-либо другую информацию о статусе, MSDN просто обновят и это не будет нарушением обратной совместимости, т.к. вам сказали как правильно обрабатывать значения. Для этого и существует HRESULT который может может описывать как и ошибки так и положительные статусы. В MSDN явно описано - тестируйте старший бит, не проверяйте успех/неудачу через константы, вот вам макросы специальные. Но некоторые упертые люди продолжают писать так как они привыкли или где-то когда-то скопипастили.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Тут наверное вопросы уже не к программисту. Для программиста документация - всё.
Программист редко лезет в недокументированные вещи.
Ну все правильно там описано. Программист прежде чем работать с каким-либо типом должен изучить его. Там же не LONG возвращается какой-нибудь, а вполне хорошо документированная структура. Более того уже привел информацию из источника в которой описано как правильно работать с этим типом.

Добавлено через 8 минут
Цитата Сообщение от Pro_grammer Посмотреть сообщение
"Если метод не работает, он возвращает код ошибки."
Ну и? Если метод вернет S_FALSE что будет?

Цитата Сообщение от Pro_grammer Посмотреть сообщение
От куда ты придумал про другой положительный статус?
Написано без всяких условностей, если не S_OK, то ошибка.
Нет, написано если метод фейлится то возвращается код ошибки. Коды ошибок в диапазоне 0x80000000–0xFFFFFFFF.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Хорошо. Давай, покажи как ты это напишешь правильно, я с удовольствием поучусь:
Ну предложил же тебе Замабувараев. Я не знаю есть ли в PB эти макросы, можешь просто тестировать старший бит, если установлен - то ошибка, все как в документации. В VB6 к примеру при декларации в TLB среда сама делает обработчик ошибок автоматически так как описано в MSDN. Она никогда не проверяет равен ли HRESULT S_OK.
1
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,009
Записей в блоге: 7
01.05.2021, 23:28
Цитата Сообщение от The trick Посмотреть сообщение
Смысл в том что может быть возвращен любой другой положительный статус что и написано в теле условия в комментарии.
Согласно описания функции если она выполнена без ошибок, результат S_OK. Может ли эта функция вернуть не S_OK, но при этом она выполнена без ошибок и ее результат достоверен? Если нет, то зачем вы доказываете кто код написан неправильно?

Цитата Сообщение от The trick Посмотреть сообщение
Почему ты тоже явно игнорируешь ту информацию из MSDN о правильной обработке HRESULT кодов?
Почему вы игнорируете описание функции?

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Анатолий вроде хочет сказать, что это не применимо для всех случаев, потому что резулт
не всегда даст код ошибки.
Код написан согласно описания функции. Что не так?

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Просто не всегда отдавая себе отчёт, что бесгеморной кросспалтформы не бывает.
У Замабувараева WinAPI кросплатформенные!
Кликните здесь для просмотра всего текста
Цитата Сообщение от Замабувараев Посмотреть сообщение
Так это вы отстали от жизни лет на 20: винапи уже давно кроссплатформенное.
Цитата Сообщение от Замабувараев Посмотреть сообщение
Я тоже пишу кроссплатформенно, потому что винапи уже давно кроссплатформенно.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
01.05.2021, 23:55  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Ну предложил же тебе Замабувараев. Я не знаю есть ли в PB эти макросы, можешь просто тестировать старший бит, если установлен - то ошибка, все как в документации.
Вы с Замабувараевым, как и в прошлый раз, когда не увидели элементарную ошибку в обработке строки, тоже пытались выкрутиться, но в итоге код изменили. Тут тоже не выйдет, крути не крути, а в MSDN написано всё конкретно

Вот что написано в документации по ошибкам - see Common HRESULT Values. Что, трудно что ли почитать описание в MSDN


Here are the values listed alphabetically by name.

COMMON HRESULT VALUES
Name Description Value
S_OK Operation successful 0x00000000
E_ABORT Operation aborted 0x80004004
E_ACCESSDENIED General access denied error 0x80070005
E_FAIL Unspecified failure 0x80004005
E_HANDLE Handle that is not valid 0x80070006
E_INVALIDARG One or more arguments are not valid 0x80070057
E_NOINTERFACE No such interface supported 0x80004002
E_NOTIMPL Not implemented 0x80004001
E_OUTOFMEMORY Failed to allocate necessary memory 0x8007000E
E_POINTER Pointer that is not valid 0x80004003
E_UNEXPECTED Unexpected failure 0x8000FFFF


Here are the values listed in numeric order by value.

TABLE 2
Value Name Description
0x00000000 S_OK Operation successful
0x80004001 E_NOTIMPL Not implemented
0x80004002 E_NOINTERFACE No such interface supported
0x80004003 E_POINTER Pointer that is not valid
0x80004004 E_ABORT Operation aborted
0x80004005 E_FAIL Unspecified failure
0x8000FFFF E_UNEXPECTED Unexpected failure
0x80070005 E_ACCESSDENIED General access denied error
0x80070006 E_HANDLE Handle that is not valid
0x8007000E E_OUTOFMEMORY Failed to allocate necessary memory
0x80070057 E_INVALIDARG One or more arguments are not valid
Нет в описании больше ни каких "положительных статусов" кроме :
S_OK Operation successful

и не надо натягивать сову на глобус. Написать конечно можно и как ты говоришь, только зачем?

Есть конкретное описание конкретной функции, и не надо сюда тащить то, без чего всё и так прекрасно работает.
И пока кодом мне не докажут обратное, я дискуссию прекращаю.
1
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
02.05.2021, 03:27
Цитата Сообщение от locm Посмотреть сообщение
У Замабувараева WinAPI кросплатформенные!
Да там просто люди мозги запудрили своим этим wine is not emulator или типа того.
Эмулятор он и в африке эмулятор. Эмулирует одно на другом. Причём косо криво,
как и подавляющее большинство эмуляторов, работает хоть и многое, но не всё и не идентично.
Причём это не может быть устойчивой кроссплатформой, винд было много, у каждой свои особенности,
а эмулятор мол один на все и всё это не с тем уровнем комфорта, с каким хотелось бы, даже если работает.
Причём если и просто на кроссплатформе проблемы бывают, а тут ещё и "прослойки".

Цитата Сообщение от locm Посмотреть сообщение
Код написан согласно описания функции. Что не так?
Да всё вроде так. Тут наверное зависит от уровня взаимодействия, если прогер хочет
обработать все эти ошибки. Хотя по факту если функция не выполнилась, то вопрос "почему"
интересует лишь прогера для отладочных целей.
Анатолий просто пишет про стадо жвачных, но стадо оно всё равно пойдёт топтаться на стековерфлоу и хабр.
Т.е. прежде чем включить голову, решение будет копироваться до писюльки, если оно работает.
Просто и при чём тут конкретно программер, в интернетах по WinAPI криминала в разы больше.

Добавлено через 11 минут
SLIsGenuineLocalEx к примеру получает какие-либо данные из реестра которая вернет к примеру SEC_I_LOCAL_LOGON. Может такое быть? Может. Данные в любом случае извлекутся.
Всмысле "извлекутся"? Есть условие. Оно не выполнится если значение будет не такое.
Он же чётко прописал значение, там нет разночтений. Извлекутся, наверное, если вообще
забить на эти проверки.
А смену документаций и функционала мы уже видели, нет ничего хорошего всё херится сразу.
И на PB такое было и на FB. Старые коды хрен откомпилируешь когда что-то меняют.
В принципе это привычно уже, что тестить надо на тех ОС-как которые нужны. Всё чтобы охватить
нужно сильно запариваться.

Добавлено через 1 час 7 минут
Цитата Сообщение от The trick Посмотреть сообщение
В MSDN явно описано - тестируйте старший бит, не проверяйте успех/неудачу через константы, вот вам макросы специальные. Но некоторые упертые люди продолжают писать так как они привыкли или где-то когда-то скопипастили.
Да в принципе нетрудно писать.
Цитата Сообщение от The trick Посмотреть сообщение
if (FAILED(hr))
Один фиг на самом деле. Просто так и не понял чем косячен конкретный код программера
и почему он не будет работать. Вроде по коду всё нормально и функция документирована.
Просто так если рассуждать мол завтра грянет гром, да что угодно может случиться.
Мне вот на неделе притащили комп ASUS X540S так вот там IDE совместимости нет, сидюка нет
и всего 2 USB порта. По дефолту стоит 10-ка, а т.е. 50%-100% загрузка проца постоянно,
80% загрузка памяти и постоянный SWAP, 100% загрузка диска по диспетчеру, хотя если просуммировать
там в секунду мегов по 5-7 фигачит. Так вот и подумать что с этим чудом техники можно сделать
4 ядра 1.6ГГц? XP точно не поставить, косяк с AHCI. Vista - дров нету нигде. 8-жирновата,
осталась 7-ка. И люди не гнушаются на это ставить 10-ку и урезать обратную совместимость,
да туда проблема воткнуть даже 7 чистую, т.к. оно не находит контроллер шины и USB 3.0.
Это было отступление про обратную совместимость, которая когда-то, лет 20 тому назад
была очень стабильная и надежная. Ну да отрезать можно всё что угодно, но людям что с этого хорошо?
У вендоров это вопрос денег, они продать своё дерьмо уже не могут. Жиром затекли их ленивые жопы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.05.2021, 03:27

Проверка на подлинность Windows 7 (не прошла) экран черный
как убить черный экран в семерке? в хр делала, а тут другое дело) муж вчера попробовал, сегодня с Вашей помощью еле комп реанимировала)...

Проверка на подлинность
Здравствуйте! У меня к вам просьба.Не мог бы кто-то помочь мне разобраться с одной очень интересной задачкой по Access? И решения у...

Проверка COOKIE на подлинность
Здравствуйте. Мне нужно проверить куки на подлинность, что пользователь действительно зарегистрирован $db = Db::getConnection(); ...

Проверка на подлинность домена
Доброго времени суток. У меня небольшой сайт и он шлет на vps сервер, всплыло что кто-то открыл другие домены и скорее всего простым...

Активация и проверка на подлинность
копия windows не прошла проверку на подлинностью. что это может быть?как его убрать чтоб оно больше не высвечивалось? а то поменяю тему а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
28. КОнкретное развертывание плана номер 1 из поста номер 27
anaschu 22.06.2026
Можно ли из модели получить конкретные строительные требования? Честно — напрямую из текущей модели такие ответы не получить. Но цепочка логики есть, и она не такая длинная. Где разрыв . . .
27. Планы на разработку функциональных требований к строительству внутри модели пищеблока (или не только его?)
anaschu 22.06.2026
Что уже реализовано и даёт конфликты «бесплатно» Самый простой конфликт уже работает — конфликт за ресурс-работника. Заданий больше, чем доступных поваров → очередь в queue1. Это прямое отражение. . .
26. мед мат модель.Какие типы конфликтов функциональных требований можно рассчитать через ДЕС-моделирование (СМО) в AnyLogic?
anaschu 22.06.2026
Что ДЕС/ СМО умеет считать напрямую: Конфликты за ресурсы (очереди, узкие места). Несколько типов агентов (повара, учителя, рабочие, пациенты) претендуют на один ресурс (лифт, вход, коридор,. . .
25 модель здравосохранения и функциональных требований к пищеблоку: конфликты функциональных требований.
anaschu 22.06.2026
Есть ли данные о том, какие функциональные/ эксплуатационные требования или их сочетания труднее всего учитывать при проектировании зданий? Да, такие данные есть, и они хорошо описаны и в российской,. . .
Remote Connection Manager
DevAlt 21.06.2026
Написал для себя небольшую прилагу: https:/ / github. com/ altbodhi/ ReConMan По итогу пришел к мысли, что DU не дружат с существующими технологиями. От сериализации до отображения в реляционную. . .
Администрация Хабра удаляет новые энрегоэфективные алгоритмы, которые не западной школы кода, и вовсе никак не сгенерировавны.
Hrethgir 20.06.2026
Делается это, как замечено, при правках - при объявлении концептуальных отличий в алгоримах. Делается это, по линейке событий - после дополнения публикации основными отличиями от основных западных. . .
Процесс ориентированная диалектика (не новость - просто системное обновление, философия).
Hrethgir 20.06.2026
Однажды один участник в своём блоге, на этом форуме, сделал запись "О языках замолвите слово". Понимая, что язык - важная вещь, я решил хорошо подумать, прежде чем сказать, и сказал то, что вы видите. . .
Контроль уникальности строк в табличной части документа
Maks 18.06.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ПланированиеСпецтехники" с табличной частью "НаличиеОборудования", разработанного в КА2. Задача: контроль уникальности строк в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru