Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Функция HttpReceiveClientCertificate используется серверным приложением для получения SSL-сертификата клиента или маркера привязки канала (CBT).
Синтаксис
HTTPAPI_LINKAGE ULONG HttpReceiveClientCertificate(
[in] HANDLE RequestQueueHandle,
[in] HTTP_CONNECTION_ID ConnectionId,
[in] ULONG Flags,
[out] PHTTP_SSL_CLIENT_CERT_INFO SslClientCertInfo,
[in] ULONG SslClientCertInfoSize,
[out, optional] PULONG BytesReceived,
[in, optional] LPOVERLAPPED Overlapped
);
Параметры
[in] RequestQueueHandle
Дескриптор очереди запросов, с которой связан указанный КЛИЕНТ SSL или CBT. Создается очередь запросов, а ее дескриптор возвращается вызовом функции HttpCreateRequestQueue .
Windows Server 2003 с пакетом обновления 1 (SP1) и Windows XP с пакетом обновления 2 (SP2): Дескриптор очереди запросов создается функцией HttpCreateHttpHandle .
[in] ConnectionId
Значение типа , определяющее подключение к клиенту. Это значение получается из элемента ConnectionIdструктуры HTTP_REQUEST , заполненной функцией HttpReceiveHttpRequest .
[in] Flags
Значение , изменяющее поведение функции HttpReceiveClientCertificate .
[out] SslClientCertInfo
Если параметр Flags равен 0, то этот параметр указывает на структуру HTTP_SSL_CLIENT_CERT_INFO , в которую функция записывает запрошенные сведения о сертификате клиента. Буфер, на который указывает pSslClientCertInfo , должен быть достаточно большим, чтобы вместить структуру HTTP_SSL_CLIENT_CERT_INFO плюс значение члена CertEncodedSize этой структуры.
Если параметр FlagsHTTP_RECEIVE_SECURE_CHANNEL_TOKEN, то этот параметр указывает на HTTP_REQUEST_CHANNEL_BIND_STATUS структуру, в которую функция записывает запрошенные данные CBT. Буфер, на который указывает pSslClientCertInfo , должен быть достаточно большим, чтобы вместить структуру HTTP_REQUEST_CHANNEL_BIND_STATUS плюс значение члена ChannelTokenSize этой структуры.
[in] SslClientCertInfoSize
Размер (в байтах) буфера, на который указывает параметр pSslClientCertInfo .
[out, optional] BytesReceived
Необязательный указатель на переменную, получающую количество байтов, записываемых в структуру, на которую указывает pSslClientCertInfo. Если он не используется, задайте для него значение NULL.
При выполнении асинхронного вызова с помощью pOverlapped задайте для параметра pBytesReceivedзначение NULL. В противном случае, если pOverlapped имеет значение NULL, pBytesReceived должен содержать допустимый адрес памяти, а не иметь значение NULL.
[in, optional] Overlapped
Для асинхронных вызовов задайте для параметра pOverlapped значение , указывающее на структуру OVERLAPPED , а для синхронных вызовов — значение NULL.
Синхронный вызов блокируется до получения сертификата клиента, в то время как асинхронный вызов немедленно возвращает ERROR_IO_PENDING , а вызывающее приложение затем использует порты getOverlappedResult или завершения ввода-вывода, чтобы определить, когда операция завершена. Дополнительные сведения об использовании структур OVERLAPPED для синхронизации см. в разделе Синхронизация и перекрытие входных и выходных данных.
Возвращаемое значение
| Значение | Значение |
|---|---|
|
Функция выполнена успешно.
Все данные записаны в буфер, на который указывает параметр pSslClientCertInfo . NumberOfBytesTransferred указывает, сколько байтов было записано в буфер. |
|
Функция используется асинхронно. Операция была инициирована и будет завершена позже с помощью обычных перекрывающихся механизмов завершения ввода-вывода. |
|
Один или несколько предоставленных параметров являются недопустимыми. |
|
Буфер, на который указывает параметр pSslClientCertInfo , слишком мал для получения данных, и данные не были записаны. |
|
Буфер, на который указывает параметр pSslClientCertInfo , недостаточно велик для получения всех данных. Написана и частично заполнена только базовая структура.
Если параметр Flags равен 0, структура HTTP_SSL_CLIENT_CERT_INFO написана с заполненным элементом CertEncodedSize . Вызывающий объект должен снова вызвать функцию с буфером, размером по крайней мере в байтах структуры HTTP_SSL_CLIENT_CERT_INFO плюс значением члена CertEncodedSize . Если параметр FlagsHTTP_RECEIVE_SECURE_CHANNEL_TOKEN, структура HTTP_REQUEST_CHANNEL_BIND_STATUS написана с заполненным элементом ChannelTokenSize . Вызывающий объект должен снова вызвать функцию с буфером, равным по крайней мере размеру (в байтах) HTTP_REQUEST_CHANNEL_BIND_STATUS плюс значение члена ChannelTokenSize . |
|
Функция не может найти сертификат клиента или CBT. |
|
Код системной ошибки, определенный в файле заголовка WinError.h. |
Комментарии
Поведение функции HttpReceiveClientCertificate зависит от того, запрашивается ли SSL-сертификат клиента или маркер привязки канала.
В случае синхронного вызова функции HttpReceiveClientCertificate число полученных байтов возвращается в значении, на которое указывает параметр pBytesReceived .
В случае асинхронного вызова функции HttpReceiveClientCertificate число полученных байтов возвращается стандартными механизмами, используемыми для асинхронных вызовов. Параметр lpNumberOfBytesTransferred , возвращаемый функцией GetOverlappedResult , содержит количество полученных байтов.
Требования
| Минимальная версия клиента | Windows Vista, Windows XP с пакетом обновления 2 (SP2) [только классические приложения] |
| Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
| Целевая платформа | Windows |
| Header | http.h |
| Библиотека | Httpapi.lib |
| DLL | Httpapi.dll |
См. также раздел
Функции API HTTP-сервера версии 1.0