91 lines
2.6 KiB
C++
91 lines
2.6 KiB
C++
// Copyright (c) .NET Foundation. All rights reserved.
|
|
// Licensed under the MIT License. See License.txt in the project root for license information.
|
|
|
|
#pragma once
|
|
|
|
typedef
|
|
HINTERNET
|
|
(WINAPI * PFN_WINHTTP_WEBSOCKET_COMPLETE_UPGRADE)(
|
|
_In_ HINTERNET hRequest,
|
|
_In_opt_ DWORD_PTR pContext
|
|
);
|
|
|
|
|
|
typedef
|
|
DWORD
|
|
(WINAPI * PFN_WINHTTP_WEBSOCKET_SEND)(
|
|
_In_ HINTERNET hWebSocket,
|
|
_In_ WINHTTP_WEB_SOCKET_BUFFER_TYPE eBufferType,
|
|
_In_reads_opt_(dwBufferLength) PVOID pvBuffer,
|
|
_In_ DWORD dwBufferLength
|
|
);
|
|
|
|
typedef
|
|
DWORD
|
|
(WINAPI * PFN_WINHTTP_WEBSOCKET_RECEIVE)(
|
|
_In_ HINTERNET hWebSocket,
|
|
_Out_writes_bytes_to_(dwBufferLength, *pdwBytesRead) PVOID pvBuffer,
|
|
_In_ DWORD dwBufferLength,
|
|
_Out_range_(0, dwBufferLength) DWORD *pdwBytesRead,
|
|
_Out_ WINHTTP_WEB_SOCKET_BUFFER_TYPE *peBufferType
|
|
);
|
|
|
|
typedef
|
|
DWORD
|
|
(WINAPI * PFN_WINHTTP_WEBSOCKET_SHUTDOWN)(
|
|
_In_ HINTERNET hWebSocket,
|
|
_In_ USHORT usStatus,
|
|
_In_reads_bytes_opt_(dwReasonLength) PVOID pvReason,
|
|
_In_range_(0, WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH) DWORD dwReasonLength
|
|
);
|
|
|
|
typedef
|
|
DWORD
|
|
(WINAPI * PFN_WINHTTP_WEBSOCKET_QUERY_CLOSE_STATUS)(
|
|
_In_ HINTERNET hWebSocket,
|
|
_Out_ USHORT *pusStatus,
|
|
_Out_writes_bytes_to_opt_(dwReasonLength, *pdwReasonLengthConsumed) PVOID pvReason,
|
|
_In_range_(0, WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH) DWORD dwReasonLength,
|
|
_Out_range_(0, WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH) DWORD *pdwReasonLengthConsumed
|
|
);
|
|
|
|
class WINHTTP_HELPER
|
|
{
|
|
public:
|
|
static
|
|
HRESULT
|
|
StaticInitialize();
|
|
|
|
static
|
|
VOID
|
|
GetFlagsFromBufferType(
|
|
__in WINHTTP_WEB_SOCKET_BUFFER_TYPE BufferType,
|
|
__out BOOL * pfUtf8Encoded,
|
|
__out BOOL * pfFinalFragment,
|
|
__out BOOL * pfClose
|
|
);
|
|
|
|
static
|
|
VOID
|
|
GetBufferTypeFromFlags(
|
|
__in BOOL fUtf8Encoded,
|
|
__in BOOL fFinalFragment,
|
|
__in BOOL fClose,
|
|
__out WINHTTP_WEB_SOCKET_BUFFER_TYPE* pBufferType
|
|
);
|
|
|
|
static
|
|
PFN_WINHTTP_WEBSOCKET_COMPLETE_UPGRADE sm_pfnWinHttpWebSocketCompleteUpgrade;
|
|
|
|
static
|
|
PFN_WINHTTP_WEBSOCKET_SEND sm_pfnWinHttpWebSocketSend;
|
|
|
|
static
|
|
PFN_WINHTTP_WEBSOCKET_RECEIVE sm_pfnWinHttpWebSocketReceive;
|
|
|
|
static
|
|
PFN_WINHTTP_WEBSOCKET_SHUTDOWN sm_pfnWinHttpWebSocketShutdown;
|
|
|
|
static
|
|
PFN_WINHTTP_WEBSOCKET_QUERY_CLOSE_STATUS sm_pfnWinHttpWebSocketQueryCloseStatus;
|
|
}; |