Сейчас на форуме: (+5 невидимых)

 eXeL@B —› Вопросы новичков —› psapi.dll
Посл.ответ Сообщение


Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 04 декабря 2010 22:14
· Личное сообщение · #1

Кто-нибудь может обьяснить, почему в нижеприведенном примере использован "SYSTEM_MODULE_INFORMATION_N(1)"?
Почему не просто "SYSTEM_MODULE_INFORMATION"?
Интуитивно вроде бы все понятно, но хотелось бы знать точно, что это такое, где его определение и любые подробности относящиеся к делу.
Свен Шрайбер говорит, что это не точный код для psapi.dll, а так себе "случайный набор символов, который при компилляции дает эквивалентный бинарный код", но это конечно же шутка.


BOOL WINAPI EnumDeviceDrivers (PVOID *lpImageBase,
DWORD cb,
DWORD *lpcbNeeded)
{
SYSTEM_MODULE_INFORMATION_N(1) smi;
PSYSTEM_MODULE_INFORMATION psmi;
DWORD dSize, i;
NTSTATUS ns;
BOOL fOk = FALSE;
ns = NtQuerySystemInformation (SystemModuleInformation,
&smi, sizeof (smi), NULL);
if ((ns == STATUS_SUCCESS) ||
(ns == STATUS_INFO_LENGTH_MISMATCH))
{
dSize = sizeof (SYSTEM_MODULE_INFORMATION) +
(smi.dCount * sizeof (SYSTEM_MODULE));
if ((psmi = LocalAlloc (LMEM_FIXED, dSize)) != NULL)
{
ns = NtQuerySystemInformation (SystemModuleInformation,
psmi, dSize, NULL);
if (ns == STATUS_SUCCESS)
{
for (i = 0; (i < psmi->dCount) &&
(i < cb / sizeof (DWORD)); i++)
{
lpImageBase [i] = psmi->aModules [i].pImageBase;
}
*lpcbNeeded = i * sizeof (DWORD);
fOk = TRUE;
}
LocalFree (psmi);
if (!fOk) SetLastError (RtlNtStatusToDosError (ns));
}
}
else
{
SetLastError (RtlNtStatusToDosError (ns));
}
return fOk;
}

-----
Give me a HANDLE and I will move the Earth.





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 04 декабря 2010 23:13
· Личное сообщение · #2

Знать бы ещё, что это за ..._N.




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 04 декабря 2010 23:23
· Личное сообщение · #3

Знать бы ещё, что это за ..._N.
"My thoughts precisely!" (c)

-----
Give me a HANDLE and I will move the Earth.





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 05 декабря 2010 10:01
· Личное сообщение · #4

Вообще я ожидал, что ты это посмотришь там, откуда брал эти сорцы.
Смотри тогда мсдн, делай, как там написано, и забей на этот код.




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 05 декабря 2010 10:51
· Личное сообщение · #5

Это вообще может дженерик структура на основе анализа и изречение вовсе не шутка.

-----
Yann Tiersen best and do not fuck





Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 05 декабря 2010 13:31
· Личное сообщение · #6

Вобще это псевдокод функции EnumDeviceDrivers(), в исходниках win2k можно посмотреть другую реализацию

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes





Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 05 декабря 2010 21:16 · Поправил: plutos
· Личное сообщение · #7

Вообще я ожидал, что ты это посмотришь там, откуда брал эти сорцы.
Да в том-то и дело, что я смотрел-смотрел, но ничего больше не нашел в источнике этих сорцов, а именно в книге С.Шрайбера.
Он эту структуру использует один раз и ничего не обьясняет.
Просто было интересно почему именно эта стуктура и зачем она.

Вобще это псевдокод функции EnumDeviceDrivers(), в исходниках win2k можно посмотреть другую реализацию
Тот факт, что это псевдокод обьясняет многое, кроме одного: "Почему он написан ИМЕННО так?"
А это и был мой главный вопрос.
Спасибо всем, господа!

-----
Give me a HANDLE and I will move the Earth.





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 05 декабря 2010 21:45
· Личное сообщение · #8

plutos пишет:
Почему он написан ИМЕННО так

У каждого свои тараканы в голове.

-----
Yann Tiersen best and do not fuck





Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 05 декабря 2010 21:59 · Поправил: plutos
· Личное сообщение · #9

не поделится ли кто первоисточниками win2k?
А то на интернете все какой-то мусор попадается, или я плохо смотрел?

-----
Give me a HANDLE and I will move the Earth.




Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 07 декабря 2010 00:37
· Личное сообщение · #10

plutos
thepiratebay.org/torrent/3497574/Windows_2000_source_code




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 07 декабря 2010 02:01
· Личное сообщение · #11

SReg, спасибо за ссылку!
Но, я не думаю, что там есть то, что мне нужно, так как
"The file contains a fraction of the Windows 2000 source code about 15% in total.", а я ищу полный, если таковой где-то существует на публике.
Но все равно, спасибо!

-----
Give me a HANDLE and I will move the Earth.




Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 07 декабря 2010 02:52
· Личное сообщение · #12

Полные сорцы только у милитари структур имеются.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 07 декабря 2010 09:51
· Личное сообщение · #13

Это кто тебе сказал про структуры, гадал на кофейной гуще?
Сорцы нт4 более полные, но более старые.



Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 07 декабря 2010 14:45
· Личное сообщение · #14

А ты придерживаешься мнения что у "Них" нету сорцев винды?! Или думаешь наши юзают никсы или того хуже написали свою ось ).
www.google.ru/search?q=%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%B8%D0%BA%D0%B8+windows+%D1%83+%D1%84%D1%81%D0%B1&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 07 декабря 2010 15:09
· Личное сообщение · #15

Искать сорцы через гугл-это круто. Ладно, оффтоп на этом предлагаю закрыть.
И операционка своя тоже есть, вообще говоря, МСВС. Но в данном случае я не затрагиваю вопросы юзабельности её, стабильности и тд, просто она есть и иногда юзается.


 eXeL@B —› Вопросы новичков —› psapi.dll
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати