diff fuhtark_test/include/winapi/http.h @ 1500:91c8c3b7cbf0

add: futhark tests for generating vulkan api
author sam <sam@basx.dev>
date Wed, 26 Nov 2025 21:36:48 +0700
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fuhtark_test/include/winapi/http.h	Wed Nov 26 21:36:48 2025 +0700
@@ -0,0 +1,312 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+#ifndef __HTTP_H__
+#define __HTTP_H__
+
+#include <winsock2.h>
+#include <ws2tcpip.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define HTTP_INITIALIZE_SERVER 0x00000001
+#define HTTP_INITIALIZE_CONFIG 0x00000002
+
+#define HTTP_RECEIVE_REQUEST_FLAG_COPY_BODY 0x00000001
+
+#define HTTP_SEND_RESPONSE_FLAG_DISCONNECT 0x00000001
+#define HTTP_SEND_RESPONSE_FLAG_MORE_DATA 0x00000002
+#define HTTP_SEND_RESPONSE_FLAG_BUFFER_DATA 0x00000004
+
+#define HTTP_FLUSH_RESPONSE_FLAG_RECURSIVE 0x00000001
+
+  typedef ULONGLONG HTTP_OPAQUE_ID,*PHTTP_OPAQUE_ID;
+
+  typedef HTTP_OPAQUE_ID HTTP_REQUEST_ID,*PHTTP_REQUEST_ID;
+  typedef HTTP_OPAQUE_ID HTTP_CONNECTION_ID,*PHTTP_CONNECTION_ID;
+  typedef HTTP_OPAQUE_ID HTTP_RAW_CONNECTION_ID,*PHTTP_RAW_CONNECTION_ID;
+
+#define HTTP_NULL_ID (0ui64)
+#define HTTP_IS_NULL_ID(pid) (HTTP_NULL_ID==*(pid))
+#define HTTP_SET_NULL_ID(pid) (*(pid) = HTTP_NULL_ID)
+
+#define HTTP_BYTE_RANGE_TO_EOF ((ULONGLONG)-1)
+
+  typedef struct _HTTP_BYTE_RANGE {
+    ULARGE_INTEGER StartingOffset;
+    ULARGE_INTEGER Length;
+  } HTTP_BYTE_RANGE,*PHTTP_BYTE_RANGE;
+
+  typedef struct _HTTP_VERSION {
+    USHORT MajorVersion;
+    USHORT MinorVersion;
+  } HTTP_VERSION,*PHTTP_VERSION;
+
+#define HTTP_VERSION_UNKNOWN { 0,0 }
+#define HTTP_VERSION_0_9 { 0,9 }
+#define HTTP_VERSION_1_0 { 1,0 }
+#define HTTP_VERSION_1_1 { 1,1 }
+
+#define HTTP_SET_VERSION(version,major,minor) do { (version).MajorVersion = (major); (version).MinorVersion = (minor); } while (0,0)
+#define HTTP_EQUAL_VERSION(version,major,minor) ((version).MajorVersion==(major) && (version).MinorVersion==(minor))
+#define HTTP_GREATER_VERSION(version,major,minor) ((version).MajorVersion > (major) || ((version).MajorVersion==(major) && (version).MinorVersion > (minor)))
+#define HTTP_LESS_VERSION(version,major,minor) ((version).MajorVersion < (major) || ((version).MajorVersion==(major) && (version).MinorVersion < (minor)))
+#define HTTP_NOT_EQUAL_VERSION(version,major,minor) (!HTTP_EQUAL_VERSION(version,major,minor))
+#define HTTP_GREATER_EQUAL_VERSION(version,major,minor) (!HTTP_LESS_VERSION(version,major,minor))
+#define HTTP_LESS_EQUAL_VERSION(version,major,minor) (!HTTP_GREATER_VERSION(version,major,minor))
+
+  typedef enum _HTTP_VERB {
+    HttpVerbUnparsed,HttpVerbUnknown,HttpVerbInvalid,HttpVerbOPTIONS,HttpVerbGET,HttpVerbHEAD,HttpVerbPOST,HttpVerbPUT,HttpVerbDELETE,
+    HttpVerbTRACE,HttpVerbCONNECT,HttpVerbTRACK,HttpVerbMOVE,HttpVerbCOPY,HttpVerbPROPFIND,HttpVerbPROPPATCH,HttpVerbMKCOL,HttpVerbLOCK,
+    HttpVerbUNLOCK,HttpVerbSEARCH,HttpVerbMaximum
+  } HTTP_VERB,*PHTTP_VERB;
+
+  typedef enum _HTTP_HEADER_ID {
+    HttpHeaderCacheControl = 0,HttpHeaderConnection = 1,HttpHeaderDate = 2,HttpHeaderKeepAlive = 3,HttpHeaderPragma = 4,HttpHeaderTrailer = 5,
+    HttpHeaderTransferEncoding = 6,HttpHeaderUpgrade = 7,HttpHeaderVia = 8,HttpHeaderWarning = 9,HttpHeaderAllow = 10,HttpHeaderContentLength = 11,
+    HttpHeaderContentType = 12,HttpHeaderContentEncoding = 13,HttpHeaderContentLanguage = 14,HttpHeaderContentLocation = 15,HttpHeaderContentMd5 = 16,
+    HttpHeaderContentRange = 17,HttpHeaderExpires = 18,HttpHeaderLastModified = 19,HttpHeaderAccept = 20,HttpHeaderAcceptCharset = 21,
+    HttpHeaderAcceptEncoding = 22,HttpHeaderAcceptLanguage = 23,HttpHeaderAuthorization = 24,HttpHeaderCookie = 25,HttpHeaderExpect = 26,
+    HttpHeaderFrom = 27,HttpHeaderHost = 28,HttpHeaderIfMatch = 29,HttpHeaderIfModifiedSince = 30,HttpHeaderIfNoneMatch = 31,HttpHeaderIfRange = 32,
+    HttpHeaderIfUnmodifiedSince = 33,HttpHeaderMaxForwards = 34,HttpHeaderProxyAuthorization = 35,HttpHeaderReferer = 36,HttpHeaderRange = 37,
+    HttpHeaderTe = 38,HttpHeaderTranslate = 39,HttpHeaderUserAgent = 40,HttpHeaderRequestMaximum = 41,HttpHeaderAcceptRanges = 20,HttpHeaderAge = 21,
+    HttpHeaderEtag = 22,HttpHeaderLocation = 23,HttpHeaderProxyAuthenticate = 24,HttpHeaderRetryAfter = 25,HttpHeaderServer = 26,
+    HttpHeaderSetCookie = 27,HttpHeaderVary = 28,HttpHeaderWwwAuthenticate = 29,HttpHeaderResponseMaximum = 30,HttpHeaderMaximum = 41
+  } HTTP_HEADER_ID,*PHTTP_HEADER_ID;
+
+  typedef struct _HTTP_KNOWN_HEADER {
+    USHORT RawValueLength;
+    PCSTR pRawValue;
+  } HTTP_KNOWN_HEADER,*PHTTP_KNOWN_HEADER;
+
+  typedef struct _HTTP_UNKNOWN_HEADER {
+    USHORT NameLength;
+    USHORT RawValueLength;
+    PCSTR pName;
+    PCSTR pRawValue;
+  } HTTP_UNKNOWN_HEADER,*PHTTP_UNKNOWN_HEADER;
+
+  typedef enum _HTTP_DATA_CHUNK_TYPE {
+    HttpDataChunkFromMemory,HttpDataChunkFromFileHandle,HttpDataChunkFromFragmentCache,HttpDataChunkMaximum
+  } HTTP_DATA_CHUNK_TYPE,*PHTTP_DATA_CHUNK_TYPE;
+
+  typedef struct _HTTP_DATA_CHUNK {
+    HTTP_DATA_CHUNK_TYPE DataChunkType;
+    __MINGW_EXTENSION union {
+      struct {
+	PVOID pBuffer;
+	ULONG BufferLength;
+      } FromMemory;
+      struct {
+	HTTP_BYTE_RANGE ByteRange;
+	HANDLE FileHandle;
+      } FromFileHandle;
+      struct {
+	USHORT FragmentNameLength;
+	PCWSTR pFragmentName;
+      } FromFragmentCache;
+    };
+  } HTTP_DATA_CHUNK,*PHTTP_DATA_CHUNK;
+
+  typedef struct _HTTP_REQUEST_HEADERS {
+    USHORT UnknownHeaderCount;
+    PHTTP_UNKNOWN_HEADER pUnknownHeaders;
+    USHORT TrailerCount;
+    PHTTP_UNKNOWN_HEADER pTrailers;
+    HTTP_KNOWN_HEADER KnownHeaders[HttpHeaderRequestMaximum];
+  } HTTP_REQUEST_HEADERS,*PHTTP_REQUEST_HEADERS;
+
+  typedef struct _HTTP_RESPONSE_HEADERS {
+    USHORT UnknownHeaderCount;
+    PHTTP_UNKNOWN_HEADER pUnknownHeaders;
+    USHORT TrailerCount;
+    PHTTP_UNKNOWN_HEADER pTrailers;
+    HTTP_KNOWN_HEADER KnownHeaders[HttpHeaderResponseMaximum];
+  } HTTP_RESPONSE_HEADERS,*PHTTP_RESPONSE_HEADERS;
+
+  typedef struct _HTTP_TRANSPORT_ADDRESS {
+    PSOCKADDR pRemoteAddress;
+    PSOCKADDR pLocalAddress;
+  } HTTP_TRANSPORT_ADDRESS,*PHTTP_TRANSPORT_ADDRESS;
+
+  typedef struct _HTTP_COOKED_URL {
+    USHORT FullUrlLength;
+    USHORT HostLength;
+    USHORT AbsPathLength;
+    USHORT QueryStringLength;
+    PCWSTR pFullUrl;
+    PCWSTR pHost;
+    PCWSTR pAbsPath;
+    PCWSTR pQueryString;
+  } HTTP_COOKED_URL,*PHTTP_COOKED_URL;
+
+  typedef ULONGLONG HTTP_URL_CONTEXT;
+
+  typedef struct _HTTP_SSL_CLIENT_CERT_INFO {
+    ULONG CertFlags;
+    ULONG CertEncodedSize;
+    PUCHAR pCertEncoded;
+    HANDLE Token;
+    BOOLEAN CertDeniedByMapper;
+  } HTTP_SSL_CLIENT_CERT_INFO,*PHTTP_SSL_CLIENT_CERT_INFO;
+
+  typedef struct _HTTP_SSL_INFO {
+    USHORT ServerCertKeySize;
+    USHORT ConnectionKeySize;
+    ULONG ServerCertIssuerSize;
+    ULONG ServerCertSubjectSize;
+    PCSTR pServerCertIssuer;
+    PCSTR pServerCertSubject;
+    PHTTP_SSL_CLIENT_CERT_INFO pClientCertInfo;
+    ULONG SslClientCertNegotiated;
+  } HTTP_SSL_INFO,*PHTTP_SSL_INFO;
+
+  typedef struct _HTTP_REQUEST {
+    ULONG Flags;
+    HTTP_CONNECTION_ID ConnectionId;
+    HTTP_REQUEST_ID RequestId;
+    HTTP_URL_CONTEXT UrlContext;
+    HTTP_VERSION Version;
+    HTTP_VERB Verb;
+    USHORT UnknownVerbLength;
+    USHORT RawUrlLength;
+    PCSTR pUnknownVerb;
+    PCSTR pRawUrl;
+    HTTP_COOKED_URL CookedUrl;
+    HTTP_TRANSPORT_ADDRESS Address;
+    HTTP_REQUEST_HEADERS Headers;
+    ULONGLONG BytesReceived;
+    USHORT EntityChunkCount;
+    PHTTP_DATA_CHUNK pEntityChunks;
+    HTTP_RAW_CONNECTION_ID RawConnectionId;
+    PHTTP_SSL_INFO pSslInfo;
+  } HTTP_REQUEST,*PHTTP_REQUEST;
+
+#define HTTP_REQUEST_FLAG_MORE_ENTITY_BODY_EXISTS 0x00000001
+
+  typedef struct _HTTP_RESPONSE {
+    ULONG Flags;
+    HTTP_VERSION Version;
+    USHORT StatusCode;
+    USHORT ReasonLength;
+    PCSTR pReason;
+    HTTP_RESPONSE_HEADERS Headers;
+    USHORT EntityChunkCount;
+    PHTTP_DATA_CHUNK pEntityChunks;
+  } HTTP_RESPONSE,*PHTTP_RESPONSE;
+
+  typedef enum _HTTP_CACHE_POLICY_TYPE {
+    HttpCachePolicyNocache,HttpCachePolicyUserInvalidates,HttpCachePolicyTimeToLive,HttpCachePolicyMaximum
+  } HTTP_CACHE_POLICY_TYPE,*PHTTP_CACHE_POLICY_TYPE;
+
+  typedef struct _HTTP_CACHE_POLICY {
+    HTTP_CACHE_POLICY_TYPE Policy;
+    ULONG SecondsToLive;
+  } HTTP_CACHE_POLICY,*PHTTP_CACHE_POLICY;
+
+  typedef enum _HTTP_SERVICE_CONFIG_ID {
+    HttpServiceConfigIPListenList,HttpServiceConfigSSLCertInfo,HttpServiceConfigUrlAclInfo,HttpServiceConfigMax
+  } HTTP_SERVICE_CONFIG_ID,*PHTTP_SERVICE_CONFIG_ID;
+
+  typedef enum _HTTP_SERVICE_CONFIG_QUERY_TYPE {
+    HttpServiceConfigQueryExact,HttpServiceConfigQueryNext,HttpServiceConfigQueryMax
+  } HTTP_SERVICE_CONFIG_QUERY_TYPE,*PHTTP_SERVICE_CONFIG_QUERY_TYPE;
+
+  typedef struct _HTTP_SERVICE_CONFIG_SSL_KEY {
+    PSOCKADDR pIpPort;
+  } HTTP_SERVICE_CONFIG_SSL_KEY,*PHTTP_SERVICE_CONFIG_SSL_KEY;
+
+  typedef struct _HTTP_SERVICE_CONFIG_SSL_PARAM {
+    ULONG SslHashLength;
+    PVOID pSslHash;
+    GUID AppId;
+    PWSTR pSslCertStoreName;
+    DWORD DefaultCertCheckMode;
+    DWORD DefaultRevocationFreshnessTime;
+    DWORD DefaultRevocationUrlRetrievalTimeout;
+    PWSTR pDefaultSslCtlIdentifier;
+    PWSTR pDefaultSslCtlStoreName;
+    DWORD DefaultFlags;
+  } HTTP_SERVICE_CONFIG_SSL_PARAM,*PHTTP_SERVICE_CONFIG_SSL_PARAM;
+
+#define HTTP_SERVICE_CONFIG_SSL_FLAG_USE_DS_MAPPER 0x00000001
+#define HTTP_SERVICE_CONFIG_SSL_FLAG_NEGOTIATE_CLIENT_CERT 0x00000002
+#define HTTP_SERVICE_CONFIG_SSL_FLAG_NO_RAW_FILTER 0x00000004
+
+  typedef struct _HTTP_SERVICE_CONFIG_SSL_SET {
+    HTTP_SERVICE_CONFIG_SSL_KEY KeyDesc;
+    HTTP_SERVICE_CONFIG_SSL_PARAM ParamDesc;
+  } HTTP_SERVICE_CONFIG_SSL_SET,*PHTTP_SERVICE_CONFIG_SSL_SET;
+
+  typedef struct _HTTP_SERVICE_CONFIG_SSL_QUERY {
+    HTTP_SERVICE_CONFIG_QUERY_TYPE QueryDesc;
+    HTTP_SERVICE_CONFIG_SSL_KEY KeyDesc;
+    DWORD dwToken;
+  } HTTP_SERVICE_CONFIG_SSL_QUERY,*PHTTP_SERVICE_CONFIG_SSL_QUERY;
+
+  typedef struct _HTTP_SERVICE_CONFIG_IP_LISTEN_PARAM {
+    USHORT AddrLength;
+    PSOCKADDR pAddress;
+  } HTTP_SERVICE_CONFIG_IP_LISTEN_PARAM,*PHTTP_SERVICE_CONFIG_IP_LISTEN_PARAM;
+
+  typedef struct _HTTP_SERVICE_CONFIG_IP_LISTEN_QUERY {
+    ULONG AddrCount;
+    SOCKADDR_STORAGE AddrList[ANYSIZE_ARRAY];
+  } HTTP_SERVICE_CONFIG_IP_LISTEN_QUERY,*PHTTP_SERVICE_CONFIG_IP_LISTEN_QUERY;
+
+  typedef struct _HTTP_SERVICE_CONFIG_URLACL_KEY {
+    PWSTR pUrlPrefix;
+  } HTTP_SERVICE_CONFIG_URLACL_KEY,*PHTTP_SERVICE_CONFIG_URLACL_KEY;
+
+  typedef struct _HTTP_SERVICE_CONFIG_URLACL_PARAM {
+    PWSTR pStringSecurityDescriptor;
+  } HTTP_SERVICE_CONFIG_URLACL_PARAM,*PHTTP_SERVICE_CONFIG_URLACL_PARAM;
+
+  typedef struct _HTTP_SERVICE_CONFIG_URLACL_SET {
+    HTTP_SERVICE_CONFIG_URLACL_KEY KeyDesc;
+    HTTP_SERVICE_CONFIG_URLACL_PARAM ParamDesc;
+  } HTTP_SERVICE_CONFIG_URLACL_SET,*PHTTP_SERVICE_CONFIG_URLACL_SET;
+
+  typedef struct _HTTP_SERVICE_CONFIG_URLACL_QUERY {
+    HTTP_SERVICE_CONFIG_QUERY_TYPE QueryDesc;
+    HTTP_SERVICE_CONFIG_URLACL_KEY KeyDesc;
+    DWORD dwToken;
+  } HTTP_SERVICE_CONFIG_URLACL_QUERY,*PHTTP_SERVICE_CONFIG_URLACL_QUERY;
+
+#if !defined(HTTPAPI_LINKAGE)
+#define HTTPAPI_LINKAGE DECLSPEC_IMPORT
+#endif
+
+  typedef struct _HTTPAPI_VERSION {
+    USHORT HttpApiMajorVersion;
+    USHORT HttpApiMinorVersion;
+  } HTTPAPI_VERSION,*PHTTPAPI_VERSION;
+
+#define HTTPAPI_VERSION_1 {1,0}
+
+  HTTPAPI_LINKAGE ULONG WINAPI HttpInitialize(HTTPAPI_VERSION Version,ULONG Flags,PVOID pReserved);
+  HTTPAPI_LINKAGE ULONG WINAPI HttpTerminate(ULONG Flags,PVOID pReserved);
+  HTTPAPI_LINKAGE ULONG WINAPI HttpCreateHttpHandle(PHANDLE pReqQueueHandle,ULONG Options);
+  HTTPAPI_LINKAGE ULONG WINAPI HttpReceiveClientCertificate(HANDLE ReqQueueHandle,HTTP_CONNECTION_ID ConnectionId,ULONG Flags,PHTTP_SSL_CLIENT_CERT_INFO pSslClientCertInfo,ULONG SslClientCertInfoSize,PULONG pBytesReceived,LPOVERLAPPED pOverlapped);
+  HTTPAPI_LINKAGE ULONG WINAPI HttpAddUrl(HANDLE ReqQueueHandle,PCWSTR pUrlPrefix,PVOID pReserved);
+  HTTPAPI_LINKAGE ULONG WINAPI HttpRemoveUrl(HANDLE ReqQueueHandle,PCWSTR pUrlPrefix);
+  HTTPAPI_LINKAGE ULONG WINAPI HttpReceiveHttpRequest(HANDLE ReqQueueHandle,HTTP_REQUEST_ID RequestId,ULONG Flags,PHTTP_REQUEST pRequestBuffer,ULONG RequestBufferLength,PULONG pBytesReceived,LPOVERLAPPED pOverlapped);
+  HTTPAPI_LINKAGE ULONG WINAPI HttpReceiveRequestEntityBody(HANDLE ReqQueueHandle,HTTP_REQUEST_ID RequestId,ULONG Flags,PVOID pBuffer,ULONG BufferLength,PULONG pBytesReceived,LPOVERLAPPED pOverlapped);
+  HTTPAPI_LINKAGE ULONG WINAPI HttpSendHttpResponse(HANDLE ReqQueueHandle,HTTP_REQUEST_ID RequestId,ULONG Flags,PHTTP_RESPONSE pHttpResponse,PVOID pReserved1,PULONG pBytesSent,PVOID pReserved2,ULONG Reserved3,LPOVERLAPPED pOverlapped,PVOID pReserved4);
+  HTTPAPI_LINKAGE ULONG WINAPI HttpSendResponseEntityBody(HANDLE ReqQueueHandle,HTTP_REQUEST_ID RequestId,ULONG Flags,USHORT EntityChunkCount,PHTTP_DATA_CHUNK pEntityChunks,PULONG pBytesSent,PVOID pReserved1,ULONG Reserved2,LPOVERLAPPED pOverlapped,PVOID pReserved3);
+  HTTPAPI_LINKAGE ULONG WINAPI HttpWaitForDisconnect(HANDLE ReqQueueHandle,HTTP_CONNECTION_ID ConnectionId,LPOVERLAPPED pOverlapped);
+  HTTPAPI_LINKAGE ULONG WINAPI HttpFlushResponseCache(HANDLE ReqQueueHandle,PCWSTR pUrlPrefix,ULONG Flags,LPOVERLAPPED pOverlapped);
+  HTTPAPI_LINKAGE ULONG WINAPI HttpAddFragmentToCache(HANDLE ReqQueueHandle,PCWSTR pUrlPrefix,PHTTP_DATA_CHUNK pDataChunk,PHTTP_CACHE_POLICY pCachePolicy,LPOVERLAPPED pOverlapped);
+  HTTPAPI_LINKAGE ULONG WINAPI HttpReadFragmentFromCache(HANDLE ReqQueueHandle,PCWSTR pUrlPrefix,PHTTP_BYTE_RANGE pByteRange,PVOID pBuffer,ULONG BufferLength,PULONG pBytesRead,LPOVERLAPPED pOverlapped);
+  HTTPAPI_LINKAGE ULONG WINAPI HttpSetServiceConfiguration(HANDLE ServiceHandle,HTTP_SERVICE_CONFIG_ID ConfigId,PVOID pConfigInformation,ULONG ConfigInformationLength,LPOVERLAPPED pOverlapped);
+  HTTPAPI_LINKAGE ULONG WINAPI HttpDeleteServiceConfiguration(HANDLE ServiceHandle,HTTP_SERVICE_CONFIG_ID ConfigId,PVOID pConfigInformation,ULONG ConfigInformationLength,LPOVERLAPPED pOverlapped);
+  HTTPAPI_LINKAGE ULONG WINAPI HttpQueryServiceConfiguration(HANDLE ServiceHandle,HTTP_SERVICE_CONFIG_ID ConfigId,PVOID pInputConfigInformation,ULONG InputConfigInformationLength,PVOID pOutputConfigInformation,ULONG OutputConfigInformationLength,PULONG pReturnLength,LPOVERLAPPED pOverlapped);
+
+#ifdef __cplusplus
+}
+#endif
+#endif