Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O recurso de fila de solicitação nomeada da API do HTTP Server versão 2.0 permite que vários aplicativos, operando sob processos e contas de usuário separados, acessem a fila de solicitações. A fila de solicitações é aberta pelo nome e protegida usando Listas de Controle de Acesso (ACLs) para garantir que os aplicativos não possam acessar os dados uns dos outros. Um único processo cria a fila de solicitações e concede permissão a outros processos para usar a fila de solicitações. Assim, outros processos no computador acessam a fila de solicitações com o menor privilégio necessário para atender solicitações. Possíveis danos ao serviço HTTP, devido a vulnerabilidades no código de terceiros, são minimizados quando os aplicativos são executados com privilégios mínimos.
A fila de solicitação nomeada é criada com a funçãoHttpCreateRequestQueue. Quando a fila de solicitações é criada, o aplicativo especifica a ACL no parâmetro pSecurityAttribute. A ACL, que só pode ser definida quando a fila de solicitações é criada, permite que os processos de trabalho abram a fila de solicitações, recebam solicitações e enviem respostas. Por padrão, os processos não têm permissão para abrir uma fila de solicitações, a menos que tenham recebido permissão na ACL. Os aplicativos não exigem privilégios administrativos para criar a fila de solicitações.
A fila de solicitações deve ser criada com um nome especificado no parâmetro pName de HttpCreateRequestQueue para que outros processos abram a fila de solicitações. Se pName estiver NULL , uma fila de solicitações sem nome será criada e nenhum outro processo poderá abri-la.
Processos de criação e controladoria
Quando a fila de solicitações é criada, o aplicativo pode abri-la como um processo de controlador ou um processo de criador. Os processos do controlador e do criador atuam como administradores para a fila de solicitações, mas o controlador não executa operações de E/S nela. O aplicativo indica que é um processo de controlador quando a fila de solicitações é criada, especificando HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER no parâmetro Flags de HttpCreateRequestQueue. Se o sinalizador HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER não estiver definido, o aplicativo será um processo de criação.
A lista a seguir contém tarefas executadas pelo processo do controlador e pelo processo do criador:
- Crie a fila de solicitações e especifique o nome.
- Configure a fila de solicitações usando a funçãoHttpSetRequestQueueProperty.
- Consulte os parâmetros de configuração da fila de solicitações usando a funçãoHttpQueryRequestQueueProperty.
- Crie grupos de URL e associe-os a uma fila de solicitações.
- Defina a ACL especificando os processos de trabalho que têm permissão para receber E/S na fila de solicitações.
- Chame HttpWaitForDemandStart para atrasar a instanciação dos processos de trabalho até que a primeira solicitação chegue à fila de solicitações.
Além dessas tarefas, o processo do criador também pode executar operações de E/S na fila de solicitações.
Processos de trabalho
Um processo de trabalho pode abrir uma fila de solicitações existente somente se tiver recebido acesso a ela na ACL. Os processos de trabalho que operam com privilégios mínimos podem abrir uma fila de solicitações e executar E/S nela. Os aplicativos abrem uma fila de solicitações existente chamando HttpCreateRequestQueue com o HTTP_CREATE_REQUEST_QUEUE_FLAG_OPEN_EXISTING no parâmetro Flags e o nome da fila de solicitações no parâmetro pName.
O processo de trabalho executa as seguintes funções:
- Receba solicitações e envie respostas na fila de solicitações.
- Abra uma fila de solicitações existente pelo nome. O identificador da fila de solicitações retornada ao processo de trabalho não pode ser usado para configurar a fila de solicitações.
- Consulte os parâmetros de configuração da fila de solicitações.
O diagrama a seguir mostra o modelo de processo de trabalho para filas de solicitação. A fila de solicitações pode ter vários processos de trabalho que processam E/S e um processo de criador que configura a fila de solicitações.