windows-nt/Source/XPSP1/NT/inetsrv/iis/iisrearc/ul/api/precomp.h

179 lines
3.7 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1998-1999 Microsoft Corporation
Module Name:
precomp.h
Abstract:
Master include file for HTTPAPI.LIB user-mode interface to HTTP.SYS.
Author:
Keith Moore (keithmo) 15-Dec-1998
Revision History:
--*/
#ifndef _PRECOMP_H_
#define _PRECOMP_H_
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
#include <windows.h>
#define HTTPAPI_LINKAGE
#include <http.h>
#include <httpapi.h>
//
// Private macros.
//
#define ALLOC_MEM(cb) RtlAllocateHeap( RtlProcessHeap(), 0, (cb) )
#define FREE_MEM(ptr) RtlFreeHeap( RtlProcessHeap(), 0, (ptr) )
#define ALIGN_DOWN(length, type) \
((ULONG)(length) & ~(sizeof(type) - 1))
#define ALIGN_UP(length, type) \
(ALIGN_DOWN(((ULONG)(length) + sizeof(type) - 1), type))
#define OVERLAPPED_TO_IO_STATUS( pOverlapped ) \
((PIO_STATUS_BLOCK)&(pOverlapped)->Internal)
#define DIMENSION( array ) \
( sizeof(array) / sizeof((array)[0]) )
//
// Private types.
//
typedef enum _HTTPAPI_HANDLE_TYPE
{
HttpApiControlChannelHandleType,
HttpApiFilterChannelHandleType,
HttpApiAppPoolHandleType,
HttpApiMaxHandleType
} HTTPAPI_HANDLE_TYPE;
//
// Private prototypes.
//
BOOL
WINAPI
DllMain(
IN HMODULE DllHandle,
IN DWORD Reason,
IN LPVOID pContext OPTIONAL
);
#define HttpApiNtStatusToWin32Status( Status ) \
( ( (Status) == STATUS_SUCCESS ) \
? NO_ERROR \
: RtlNtStatusToDosError( Status ) )
NTSTATUS
HttpApiOpenDriverHelper(
OUT PHANDLE pHandle,
IN ACCESS_MASK DesiredAccess,
IN HTTPAPI_HANDLE_TYPE HandleType,
IN PCWSTR pObjectName OPTIONAL,
IN ULONG Options,
IN ULONG CreateDisposition,
IN PSECURITY_ATTRIBUTES pSecurityAttributes OPTIONAL
);
NTSTATUS
HttpApiSynchronousDeviceControl(
IN HANDLE FileHandle,
IN ULONG IoControlCode,
IN PVOID pInputBuffer OPTIONAL,
IN ULONG InputBufferLength,
OUT PVOID pOutputBuffer OPTIONAL,
IN ULONG OutputBufferLength,
OUT PULONG pBytesTransferred OPTIONAL
);
NTSTATUS
HttpApiOverlappedDeviceControl(
IN HANDLE FileHandle,
IN OUT LPOVERLAPPED pOverlapped,
IN ULONG IoControlCode,
IN PVOID pInputBuffer OPTIONAL,
IN ULONG InputBufferLength,
OUT PVOID pOutputBuffer OPTIONAL,
IN ULONG OutputBufferLength,
OUT PULONG pBytesTransferred OPTIONAL
);
ULONG
HttpApiInitializeEventCache(
VOID
);
ULONG
HttpApiTerminateEventCache(
VOID
);
BOOLEAN
HttpApiTryToStartDriver(
VOID
);
__inline
NTSTATUS
HttpApiDeviceControl(
IN HANDLE FileHandle,
IN OUT LPOVERLAPPED pOverlapped,
IN ULONG IoControlCode,
IN PVOID pInputBuffer OPTIONAL,
IN ULONG InputBufferLength,
OUT PVOID pOutputBuffer OPTIONAL,
IN ULONG OutputBufferLength,
OUT PULONG pBytesTransferred OPTIONAL
)
{
if (pOverlapped == NULL)
{
return HttpApiSynchronousDeviceControl(
FileHandle,
IoControlCode,
pInputBuffer,
InputBufferLength,
pOutputBuffer,
OutputBufferLength,
pBytesTransferred
);
}
else
{
return HttpApiOverlappedDeviceControl(
FileHandle,
pOverlapped,
IoControlCode,
pInputBuffer,
InputBufferLength,
pOutputBuffer,
OutputBufferLength,
pBytesTransferred
);
}
}
#endif // _PRECOMP_H_