2025-04-27 07:49:33 -04:00

247 lines
4.4 KiB
C

/*++
Copyright (c) 1999-1999 Microsoft Corporation
Module Name:
ulapi9x.h
Abstract:
Header file for the UL user-mode API.
Author:
Mauro Ottaviani (mauroot) 11-Aug-1999
Revision History:
--*/
#ifndef _API_H_
#define _API_H_
//
// undef DBG because it causes uldef.h to pull in UNICODE_STRING
// which we don't know about
//
#ifdef DBG
#define _HACK_DBG
#undef DBG
#endif
#include "uldef.h"
//#include "precomp.h" // used to be
//
// restore back DBG if it was defined above
//
#ifdef _HACK_DBG
#define DBG
#undef _HACK_DBG
#endif
#include "errors.h"
#ifdef __cplusplus
extern "C" {
#endif
//
// your function prototypes here
//
ULONG
WINAPI
UlInitialize(
IN ULONG Reserved
);
VOID
WINAPI
UlTerminate(
VOID
);
ULONG
WINAPI
UlCreateAppPool(
OUT PHANDLE phAppPoolHandle
);
// under WinNT (ul.sys) UlCreateAppPool() returns a system handle, so, in
// order to close the AppPool, it is sufficient to call CloseHandle() passing
// in the handle returned by UlCreateAppPool(), we must provide a different
// API for win9x, since our handle is not a kernel object
ULONG
WINAPI
UlCloseAppPool(
IN HANDLE hAppPoolHandle
);
ULONG
WINAPI
UlRegisterUri(
IN HANDLE hAppPoolHandle,
IN PWSTR pUri
);
ULONG
WINAPI
UlUnregisterUri(
IN HANDLE hAppPoolHandle,
IN PWSTR pUri
);
ULONG
WINAPI
UlUnregisterAll(
IN HANDLE *phAppPoolHandle
);
ULONG
WINAPI
UlGetOverlappedResult(
IN LPOVERLAPPED pOverlapped,
IN PULONG pNumberOfBytesTransferred,
IN BOOL bWait
);
// ul.sys, for now, exposes only server side Http messaging, our eqivalents
// are:
// UlReceiveHttpRequestHeaders() UlReceiveHttpRequest()
// UlReceiveHttpRequestEntityBody() UlReceiveEntityBody()
// UlSendHttpResponseHeaders() UlSendHttpResponse()
// UlSendHttpResponseEntityBody() UlSendEntityBody()
ULONG
WINAPI
UlSendHttpRequestHeaders(
IN PWSTR pTargetUri,
IN PUL_HTTP_REQUEST_ID pRequestId,
IN ULONG Flags,
IN PUL_HTTP_REQUEST pRequestBuffer,
IN ULONG RequestBufferLength,
OUT PULONG pBytesSent OPTIONAL,
IN LPOVERLAPPED pOverlapped OPTIONAL
);
ULONG
WINAPI
UlSendHttpRequestEntityBody(
IN UL_HTTP_REQUEST_ID RequestId,
IN ULONG Flags,
OUT PVOID pEntityBuffer,
IN ULONG EntityBufferLength,
OUT PULONG pBytesSent OPTIONAL,
IN LPOVERLAPPED pOverlapped OPTIONAL
);
ULONG
WINAPI
UlReceiveHttpRequestHeaders(
IN HANDLE AppPoolHandle,
IN UL_HTTP_REQUEST_ID RequestId,
IN ULONG Flags,
IN PUL_HTTP_REQUEST pRequestBuffer,
IN ULONG RequestBufferLength,
OUT PULONG pBytesReturned OPTIONAL,
IN LPOVERLAPPED pOverlapped OPTIONAL
);
ULONG
WINAPI
UlReceiveHttpRequestEntityBody(
IN HANDLE AppPoolHandle,
IN UL_HTTP_REQUEST_ID RequestId,
IN ULONG Flags,
OUT PVOID pEntityBuffer,
IN ULONG EntityBufferLength,
OUT PULONG pBytesReturned,
IN LPOVERLAPPED pOverlapped OPTIONAL
);
ULONG
WINAPI
UlSendHttpResponseHeaders(
IN HANDLE AppPoolHandle,
IN UL_HTTP_REQUEST_ID RequestId,
IN ULONG Flags,
IN PUL_HTTP_RESPONSE pResponseBuffer,
IN ULONG ResponseBufferLength,
IN ULONG EntityChunkCount OPTIONAL,
IN PUL_DATA_CHUNK pEntityChunks OPTIONAL,
IN PUL_CACHE_POLICY pCachePolicy OPTIONAL,
OUT PULONG pBytesSent OPTIONAL,
IN LPOVERLAPPED pOverlapped OPTIONAL
);
ULONG
WINAPI
UlSendHttpResponseEntityBody(
IN HANDLE AppPoolHandle,
IN UL_HTTP_REQUEST_ID RequestId,
IN ULONG Flags,
IN ULONG EntityChunkCount OPTIONAL,
IN PUL_DATA_CHUNK pEntityChunks OPTIONAL,
OUT PULONG pBytesSent OPTIONAL,
IN LPOVERLAPPED pOverlapped OPTIONAL
);
ULONG
WINAPI
UlReceiveHttpResponseHeaders(
IN UL_HTTP_REQUEST_ID RequestId,
IN ULONG Flags,
IN PUL_HTTP_RESPONSE pResponseBuffer,
IN ULONG ResponseBufferLength,
IN ULONG EntityChunkCount OPTIONAL,
IN PUL_DATA_CHUNK pEntityChunks OPTIONAL,
IN PUL_CACHE_POLICY pCachePolicy OPTIONAL,
OUT PULONG pBytesSent OPTIONAL,
IN LPOVERLAPPED pOverlapped OPTIONAL
);
ULONG
WINAPI
UlReceiveHttpResponseEntityBody(
IN UL_HTTP_REQUEST_ID RequestId,
IN ULONG Flags,
OUT PVOID pEntityBuffer,
IN ULONG EntityBufferLength,
OUT PULONG pBytesSent OPTIONAL,
IN LPOVERLAPPED pOverlapped OPTIONAL
);
//
// I need some APIs for IO cancelation:
//
ULONG
WINAPI
UlCancelRequest(
IN PUL_HTTP_REQUEST_ID pRequestId
);
#ifdef __cplusplus
};
#endif
#endif // _API_H_