Здравствуйте, ononim, Вы писали:
O>>>PAGE_EXECUTE надо
V>>Всё равнo NtCreateSection возвращает 0xC00000F4.
O>#define STATUS_INVALID_PARAMETER_6 ((NTSTATUS)0xC00000F4L)
O>А это точно NtCreateSection выдает, а не NtMapViewOfSection?
V>>А я начинаю сразу с NtCreateFile и NtCreateSection…
V>>Надо же как-то Пространство новое сотворить в 4 Гб!
O>Адресное пространство? Адреснные пространства в винде принадлежат процессам. Надо просто создать новый процесс.
O>Если просто хочется выделить 4ГБ то выделяйте ее NtVirtualAlloc'ом. Зачем NtCreateSection(..SEC_IMAGE..) то? Вы ею хотябы исполняемый файл в PE формате пытаетесь замапить?
Вышe я сделал акцент на этом
Общая концепция
Необходимо запустить несколько десятков/сотен «бот-процессов», которые никак не делят своё адресное пространство с системой и не имеют доступа к какому-либо API, так как в своё распоряжение должны получать все 4 Гб адресного пространства (не памяти)
Фактически каждый процесс имеет изначально 64 Кб памяти, которая зеркалами размазывается и повторяется по всему периоду в 4 Гб через предустановку селекторов сегментных регистров «cs/ds/es/fs/gs/ss», чтобы эти 64 Кб повторились 65536 раз от 0x0000???? до 0xFFFF????, чем достигается предотвращение любых исключений, связанных с доступом к памяти
Инструкции математического сопроцессора с ESCAPE-набором полностью должны быть исключены и генерировать исключение в любом случае, чтобы симулировать гипотетический периферийный сопроцессор для управления сетевым обменом, регионами памяти и портами ввода/вывода
Исполняемый файл будет в «сыром формате» без заголовков…
То есть, например, нужно тупо jpeg-файл загрузить в память и запустить его, чтобы посмотреть на «картину исключений» моим Супервизором со «сборщиком исключений»…
Сам «сборщик исключений» будет собирать статистику, вида «n-раз обнаружен in/out», «n-раз FPU-команды» и т.д…
Дело в том, что здесь нельзя использовать программную эмуляцию.
Нужно на разных компьютерах запускать и статистически оценивать сами процессоры.
P.S.: Спасибо!