Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция API HTTP Server версии 2.0 с именем очереди запросов позволяет нескольким приложениям, работающим под отдельными процессами и учетными записями пользователей, доступом к очереди запросов. Очередь запросов открывается по имени и защищается с помощью списков управления доступом (ACL), чтобы убедиться, что приложения не смогут получать доступ к другим данным. Один процесс создает очередь запросов и предоставляет разрешения другим процессам для использования очереди запросов. Таким образом, другие процессы на компьютере обращаются к очереди запросов с минимальными привилегиями, необходимыми для запросов на обслуживание. Возможный ущерб службе HTTP из-за уязвимостей в стороннем коде сводится к минимуму при выполнении приложений с минимальными привилегиями.
Именованная очередь запросов создается с помощью функции HttpCreateRequestQueue. При создании очереди запросов приложение указывает ACL в параметре pSecurityAttribute. ACL, который можно задать только при создании очереди запросов, позволяет рабочим процессам открывать очередь запросов, получать запросы и отправлять ответы. По умолчанию процессы не могут открывать очередь запросов, если они не были предоставлены разрешения в ACL. Приложениям не требуются права администратора для создания очереди запросов.
Очередь запросов должна быть создана с именем, указанным в параметре pNameHttpCreateRequestQueue для открытия очереди запросов. Если pNameзначение NULL, создается очередь неназванных запросов, и другие процессы не могут открыть его.
Процессы создателя и контроллера
При создании очереди запросов приложение может открыть его в качестве процесса контроллера или процесса создателя. Контроллер и создатель обрабатывают оба процесса в качестве администраторов для очереди запросов, но контроллер не выполняет операции ввода-вывода в нем. Приложение указывает, что это процесс контроллера при создании очереди запросов путем указания HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER в параметре флагов httpCreateRequestQueue. Если флаг HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER не задан, приложение является процессом создателя.
В следующем списке содержатся задачи, выполняемые процессом контроллера и процессом создателя:
- Создайте очередь запроса и укажите имя.
- Настройте очередь запросов с помощью функции HttpSetRequestQueueProperty.
- Запрос параметров конфигурации очереди запросов с помощью функции HttpQueryRequestQueueProperty.
- Создайте группы URL-адресов и связывает их с очередью запроса.
- Задайте ACL, указывающий рабочие процессы, которые могут получать операции ввода-вывода в очереди запросов.
- Вызовите HttpWaitForDemandStart, чтобы отложить создание экземпляра рабочих процессов до тех пор, пока первый запрос не появится в очереди запросов.
Помимо этих задач, процесс создания также может выполнять операции ввода-вывода в очереди запросов.
Рабочие процессы
Рабочий процесс может открыть существующую очередь запросов только в том случае, если им был предоставлен доступ к нему в ACL. Рабочие процессы, работающие под минимальными привилегиями, могут открывать очередь запросов и выполнять операции ввода-вывода. Приложения открывают существующую очередь запросов путем вызова HttpCreateRequestQueue с HTTP_CREATE_REQUEST_QUEUE_FLAG_OPEN_EXISTING в параметре флагов и именем очереди запросов в параметре pName.
Рабочий процесс выполняет следующие функции:
- Получение запросов и отправка ответов в очереди запросов.
- Откройте существующую очередь запросов по имени. Дескриптор очереди запроса, возвращенный рабочему процессу, нельзя использовать для настройки очереди запросов.
- Запрос параметров конфигурации очереди запроса.
На следующей схеме показана модель рабочего процесса для очередей запросов. Очередь запросов может содержать несколько рабочих процессов, обрабатывающих операции ввода-вывода, и один процесс создателя, который настраивает очередь запросов.
модель рабочего процесса 