// Sample code file: HTTPEXP.H
// Warning: This code has been marked up for HTML
#ifndef __HTTPEXP_H__
#define __HTTPEXP_H__
#ifndef IN
#define IN
#endif
#ifndef OUT
#define OUT
#endif
#ifndef UINT
typedef unsigned int UINT;
#endif
#ifndef UINT8
typedef unsigned char UINT8;
#endif
#ifndef UINT16
typedef unsigned short UINT16;
#endif
#ifndef UINT32
typedef unsigned long UINT32;
#endif
#define HINTERNET void *
#define UINT32_PTR LONG *
#define BOOL unsigned int
#define NetWareHttpStackResourceSignature 'HBNW'
//
//
// HTTP Request Method Type Definitions
//
//
#define HTTP_REQUEST_METHOD_GET 0
#define HTTP_REQUEST_METHOD_HEAD 1
#define HTTP_REQUEST_METHOD_POST 2
#define HTTP_REQUEST_METHOD_PUT 3
#define HTTP_REQUEST_METHOD_DELETE 4
#define HTTP_REQUEST_METHOD_OPTIONS 5
#define HTTP_REQUEST_METHOD_COPY 6 // WEBDAV - not supported
#define HTTP_REQUEST_METHOD_MOVE 7 // WEBDAV - not supported
#define HTTP_REQUEST_METHOD_MKCOL 8 // WEBDAV - not supported
#define HTTP_REQUEST_METHOD_PROPFIND 9 // WEBDAV - not supported
#define HTTP_REQUEST_METHOD_PROPPATCH 10 // WEBDAV - not supported
#define HTTP_REQUEST_METHOD_LOCK 11 // WEBDAV - not supported
#define HTTP_REQUEST_METHOD_UNLOCK 12 // WEBDAV - not supported
#define HTTP_REQUEST_METHOD_MKREF 13 // WEBDAV - not supported
#define HTTP_REQUEST_METHOD_ORDERPATCH 14 // WEBDAV - not supported
//
//
//
#define NETWARE_TRY_ALTERNATE_FILE_SYSTEM 0x80085555
//
//
// HTTP Response Status Codes:
//
#define HTTP_STATUS_CONTINUE 100 // OK to continue with request
#define HTTP_STATUS_SWITCH_PROTOCOLS 101 // server has switched protocols in upgrade header
#define HTTP_STATUS_OK 200 // request completed
#define HTTP_STATUS_CREATED 201 // object created, reason = new URI
#define HTTP_STATUS_ACCEPTED 202 // async completion (TBS)
#define HTTP_STATUS_PARTIAL 203 // partial completion
#define HTTP_STATUS_NO_CONTENT 204 // no info to return
#define HTTP_STATUS_RESET_CONTENT 205 // request completed, but clear form
#define HTTP_STATUS_PARTIAL_CONTENT 206 // partial GET fufilled
#define HTTP_STATUS_MULTI_STATUS 207 // multi status
#define HTTP_STATUS_AMBIGUOUS 300 // server couldn't decide what to return
#define HTTP_STATUS_MOVED 301 // object permanently moved
#define HTTP_STATUS_REDIRECT 302 // object temporarily moved
#define HTTP_STATUS_REDIRECT_METHOD 303 // redirection w/ new access method
#define HTTP_STATUS_NOT_MODIFIED 304 // if-modified-since was not modified
#define HTTP_STATUS_USE_PROXY 305 // redirection to proxy, location header specifies proxy to use
#define HTTP_STATUS_REDIRECT_KEEP_VERB 307 // HTTP/1.1: keep same verb
#define HTTP_STATUS_BAD_REQUEST 400 // invalid syntax
#define HTTP_STATUS_DENIED 401 // access denied
#define HTTP_STATUS_PAYMENT_REQ 402 // payment required
#define HTTP_STATUS_FORBIDDEN 403 // request forbidden
#define HTTP_STATUS_NOT_FOUND 404 // object not found
#define HTTP_STATUS_BAD_METHOD 405 // method is not allowed
#define HTTP_STATUS_NONE_ACCEPTABLE 406 // no response acceptable to client found
#define HTTP_STATUS_PROXY_AUTH_REQ 407 // proxy authentication required
#define HTTP_STATUS_REQUEST_TIMEOUT 408 // server timed out waiting for request
#define HTTP_STATUS_CONFLICT 409 // user should resubmit with more info
#define HTTP_STATUS_GONE 410 // the resource is no longer available
#define HTTP_STATUS_LENGTH_REQUIRED 411 // the server refused to accept request w/o a length
#define HTTP_STATUS_PRECOND_FAILED 412 // precondition given in request failed
#define HTTP_STATUS_REQUEST_TOO_LARGE 413 // request entity was too large
#define HTTP_STATUS_URI_TOO_LONG 414 // request URI too long
#define HTTP_STATUS_UNSUPPORTED_MEDIA 415 // unsupported media type
#define HTTP_STATUS_SERVER_ERROR 500 // internal server error
#define HTTP_STATUS_NOT_SUPPORTED 501 // required not supported
#define HTTP_STATUS_BAD_GATEWAY 502 // error response received from gateway
#define HTTP_STATUS_SERVICE_UNAVAIL 503 // temporarily overloaded
#define HTTP_STATUS_GATEWAY_TIMEOUT 504 // timed out waiting for gateway
#define HTTP_STATUS_VERSION_NOT_SUP 505 // HTTP version not supported
#define HTTP_STATUS_FIRST HTTP_STATUS_CONTINUE
#define HTTP_STATUS_LAST HTTP_STATUS_VERSION_NOT_SUP
/* HTTP Status Codes */
#define HTTP_SUCCESSFUL HTTP_STATUS_OK
#define HTTP_NOT_MODIFIED HTTP_STATUS_NOT_MODIFIED
#define HTTP_BAD_REQUEST HTTP_STATUS_BAD_REQUEST
#define HTTP_UNAUTHORIZED HTTP_STATUS_DENIED
#define HTTP_FORBIDDEN_ACCESS HTTP_STATUS_FORBIDDEN
#define HTTP_NOT_FOUND HTTP_STATUS_NOT_FOUND
#define HTTP_INTERNAL_SERVER_ERROR HTTP_STATUS_SERVER_ERROR
#define HTTP_NOT_IMPLEMENTED HTTP_STATUS_NOT_SUPPORTED
//
// HttpQueryInfo info levels. Generally, there is one info level
// for each potential RFC822/HTTP/MIME header that an HTTP server
// may send as part of a request response.
//
// The HTTP_QUERY_RAW_HEADERS info level is provided for clients
// that choose to perform their own header parsing.
//
#define HTTP_QUERY_MIME_VERSION 0
#define HTTP_QUERY_CONTENT_TYPE 1
#define HTTP_QUERY_CONTENT_TRANSFER_ENCODING 2 //NOT SUPPORTED
#define HTTP_QUERY_CONTENT_ID 3 //NOT SUPPORTED
#define HTTP_QUERY_CONTENT_DESCRIPTION 4 //NOT SUPPORTED
#define HTTP_QUERY_CONTENT_LENGTH 5
#define HTTP_QUERY_CONTENT_LANGUAGE 6
#define HTTP_QUERY_ALLOW 7
#define HTTP_QUERY_PUBLIC 8
#define HTTP_QUERY_DATE 9
#define HTTP_QUERY_EXPIRES 10
#define HTTP_QUERY_LAST_MODIFIED 11
#define HTTP_QUERY_MESSAGE_ID 12 // NOT SUPPORTED
#define HTTP_QUERY_URI 13
#define HTTP_QUERY_DERIVED_FROM 14
#define HTTP_QUERY_COST 15 // NOT SUPPORTED
#define HTTP_QUERY_LINK 16
#define HTTP_QUERY_PRAGMA 17
#define HTTP_QUERY_VERSION 18
#define HTTP_QUERY_STATUS_CODE 19 // NOT SUPPORTED
#define HTTP_QUERY_STATUS_TEXT 20 // NOT SUPPORTED
#define HTTP_QUERY_RAW_HEADERS 21 // NOT SUPPORTED
#define HTTP_QUERY_RAW_HEADERS_CRLF 22 // NOT SUPPORTED
#define HTTP_QUERY_CONNECTION 23
#define HTTP_QUERY_ACCEPT 24
#define HTTP_QUERY_ACCEPT_CHARSET 25
#define HTTP_QUERY_ACCEPT_ENCODING 26
#define HTTP_QUERY_ACCEPT_LANGUAGE 27
#define HTTP_QUERY_AUTHORIZATION 28
#define HTTP_QUERY_CONTENT_ENCODING 29
#define HTTP_QUERY_FORWARDED 30 // NOT SUPPORTED
#define HTTP_QUERY_FROM 31
#define HTTP_QUERY_IF_MODIFIED_SINCE 32
#define HTTP_QUERY_LOCATION 33
#define HTTP_QUERY_ORIG_URI 34 // NOT SUPPORTED
#define HTTP_QUERY_REFERER 35
#define HTTP_QUERY_RETRY_AFTER 36
#define HTTP_QUERY_SERVER 37
#define HTTP_QUERY_TITLE 38 // NOT SUPPORTED
#define HTTP_QUERY_USER_AGENT 39
#define HTTP_QUERY_WWW_AUTHENTICATE 40
#define HTTP_QUERY_PROXY_AUTHENTICATE 41
#define HTTP_QUERY_ACCEPT_RANGES 42
#define HTTP_QUERY_SET_COOKIE 43
#define HTTP_QUERY_COOKIE 44
#define HTTP_QUERY_REQUEST_METHOD 45 // special: GET/POST etc.
#define HTTP_QUERY_REFRESH 46 // NOT SUPPORTED
#define HTTP_QUERY_CONTENT_DISPOSITION 47
//
// HTTP 1.1 defined headers
//
#define HTTP_QUERY_AGE 48
#define HTTP_QUERY_CACHE_CONTROL 49
#define HTTP_QUERY_CONTENT_BASE 50 // NOT SUPPORTED
#define HTTP_QUERY_CONTENT_LOCATION 51
#define HTTP_QUERY_CONTENT_MD5 52
#define HTTP_QUERY_CONTENT_RANGE 53
#define HTTP_QUERY_ETAG 54
#define HTTP_QUERY_HOST 55
#define HTTP_QUERY_IF_MATCH 56
#define HTTP_QUERY_IF_NONE_MATCH 57
#define HTTP_QUERY_IF_RANGE 58
#define HTTP_QUERY_IF_UNMODIFIED_SINCE 59
#define HTTP_QUERY_MAX_FORWARDS 60
#define HTTP_QUERY_PROXY_AUTHORIZATION 61
#define HTTP_QUERY_RANGE 62
#define HTTP_QUERY_TRANSFER_ENCODING 63
#define HTTP_QUERY_UPGRADE 64
#define HTTP_QUERY_VARY 65
#define HTTP_QUERY_VIA 66
#define HTTP_QUERY_WARNING 67
//
// Content Type Strings
//
#define HTTP_CONTENT_TYPE_OCTET_STREAM 0
#define HTTP_CONTENT_TYPE_JPEG 1
#define HTTP_CONTENT_TYPE_GIF 2
#define HTTP_CONTENT_TYPE_PNG 3
#define HTTP_CONTENT_TYPE_ZIP 4
#define HTTP_CONTENT_TYPE_HTML 5
#define HTTP_CONTENT_TYPE_WAV 6
#define HTTP_CONTENT_TYPE_AU 7
#define HTTP_CONTENT_TYPE_MIDI 8
#define HTTP_CONTENT_TYPE_MP3 9
#define HTTP_CONTENT_TYPE_WML 10
#define HTTP_CONTENT_TYPE_END_OF_LIST 11
//
//
// Request Header Helper Routines (extraction function)
//
//
extern int HttpQueryInfo(
IN HINTERNET hRequest,
IN UINT32 dwInfoLevel, // HttpQueryInfoLevel
IN void *pBuffer,
IN OUT UINT32_PTR lpBufferLength);
extern char *HttpReturnHttpString(IN HINTERNET hndl);
extern char *HttpReturnString(UINT32 stringType);
extern int HttpReturnPathBuffers(IN HINTERNET hrequest, UINT32_PTR lpszPathBufs, char **path, char **cnvpath);
extern void *HttpReturnData(IN HINTERNET hrequest, UINT32_PTR lpszBuffer);
extern void *HttpReturnDataTxBuffer(IN HINTERNET hrequest, UINT32_PTR lpszBuffer);
extern int HttpSendDataTxBuffer(HINTERNET hndl, UINT32 bytesToSend);
extern int HttpSendDataSprintf(
IN HINTERNET hrequest,
IN void *controlString,
...);
extern BOOL HttpReturnHeaderVersion(
IN HINTERNET hndl,
IN OUT UINT32_PTR lpHttpMajorVersion,
IN OUT UINT32_PTR lpHttpMinorVersion);
extern BOOL HttpReturnRequestMethod(IN HINTERNET hndl, IN OUT UINT32_PTR httpRequestMethodType);
extern int HttpReturnRawRequest(IN HINTERNET hndl, UINT32 szRawRequestBuffer, char *pzRawRequestBuffer);
//
//
// Response Header Helper Routines
//
//
extern int HttpResetReply(IN HINTERNET hndl);
extern int HttpOpenResponseHeaderTag(IN HINTERNET hrequest, UINT32 HTTP_ERROR_CODE);
extern int HttpAddResponseHeaderTags(
IN HINTERNET hRequest,
IN void *pHeaders,
IN UINT32 dwHeadersLength);
extern int HttpAddResponseHeaderDateTag(IN HINTERNET hrequest);
extern int HttpAddResponseHeaderContentTypeTag(IN HINTERNET hrequest, IN void *pzExtName, IN int szExtName, OUT UINT32_PTR pContentLengthFlag);
extern int HttpAddResponseHeaderLastModifiedTag(IN HINTERNET hrequest, IN UINT32 gmtTimeInSeconds);
extern int HttpSendResponseHeader(IN HINTERNET hRequest);
extern int HttpAddResponseHeaderStringContentType(IN HINTERNET hrequest, IN void *pzContentType);
extern int HttpAddResponseHeaderContentLengthTag(IN HINTERNET hrequest, IN UINT32 FileSizeHigh, IN UINT32 FileSizeLow);
extern int HttpAddResponseHeaderLocationTag(IN HINTERNET hndl, char *pzURL);
extern int HttpAddResponseHeaderSetCookieTag(IN HINTERNET hndl, IN void *pCookie, IN UINT32 szCookie);
extern int HttpSendSuccessfulResponse(IN HINTERNET hrequest, void *pzContentType);
extern int HttpSendErrorResponse(IN HINTERNET hRequest, UINT32 HTTP_ERROR_CODE);
extern int HttpSendPackage(
IN HINTERNET hndl,
void *pData,
UINT32 szData);
extern int HttpSendErrorPackageResponse(
IN HINTERNET hndl,
UINT32 HTTP_ERROR_CODE,
void *pData,
UINT32 szData);
extern int HttpSendWMLDocumentPrologue(
IN HINTERNET hndl,
int version);
//
//
// Send Data Helper Routines
//
//
extern int HttpSendDataResponse(
IN HINTERNET hRequest,
IN void *pBuffer,
IN UINT32 szBuffer);
extern int HttpSendDataResponseNoCopy(
IN HINTERNET hRequest,
IN void *pBuffer,
IN UINT32 szBuffer);
extern int HttpSendDataFlush(IN HINTERNET hRequest);
extern int HttpEndDataResponse(IN HINTERNET hRequest);
//
//
// Service Registration Routines
//
//
extern BOOL RegisterServiceMethod(
IN void *pzServiceName,
IN void *pServiceTag,
IN int serviceTagLength,
IN UINT32 (*pServiceMethodCheck)(
IN HINTERNET,
IN void *pExtraInfo,
IN UINT32 szExtraInfo,
IN UINT32 InformationBits),
IN void *pRTag,
OUT UINT32 *pReturnCode);
extern BOOL RegisterServiceMethodEx(
IN void *pzServiceName,
IN void *pServiceTag,
IN int serviceTagLength,
IN void *tableOfContentsStruc, // NULL or ptr to struct TOCregistration
IN UINT32 requestedRights,
IN void *pReserved,
IN UINT32 (*pServiceMethod)(
IN HINTERNET,
IN void *pExtraInfo,
IN UINT32 szExtraInfo,
IN UINT32 InformationBits),
IN void *pRTag,
OUT UINT32 *pReturnCode);
struct TOCregistration
{
UINT32 TOCHeadingNumber; // zero or suggested level number to be in TOC
char reserved[4]; // must be set to zero
char TOCHeadingName[36];
// more data can follow
};
extern BOOL DeRegisterServiceMethod(
IN void *pzServiceName,
IN void *pServiceTag,
IN int serviceTagLength,
IN UINT32 (*pServiceMethodCheck)(
IN HINTERNET,
IN void *pExtraInfo,
IN UINT32 szExtraInfo,
IN UINT32 InformationBits),
IN void *pRTag,
OUT UINT32 *pReturnCode);
extern BOOL RegisterFileSystemServiceMethodEx(
IN UINT32 (*pServiceMethodCheck)(
IN HINTERNET,
IN void *pExtraInfo,
IN UINT32 szExtraInfo,
IN UINT32 InformationBits),
IN void *pRTag,
OUT UINT32 *pReturnCode,
IN UINT32 FileSystemID);
extern BOOL DeRegisterFileSystemServiceMethod(IN void *pRTag);
extern UINT32 TryAlternateFileSystemMethod(
IN HINTERNET hndl,
IN void *pExtraInfo,
IN UINT32 szExtraInfo,
IN UINT32 InformationBits);
extern int SetFileSystemServiceRole(int primaryFileSystemID);
//
// Information/Control Bits Follow
//
#define INFO_SUPERVISOR_PRIVILEGES_BIT 0x00000001
#define INFO_CONSOLE_OPERATOR_PRIVILEGES_BIT 0x00000002
#define INFO_LOGGED_IN_BIT 0x00000004
#define INFO_SSL_CONNECTION_BIT 0x00000008
#define INFO_NO_LICENSE_BIT 0x00000010
#define INFO_DO_DCLIENT_LOGOUT_BIT 0x00000020
#define INFO_DO_LOGIN_WITHOUT_REDIRECT_BIT 0x00000040
#ifdef WML
// CONTROL_WML_REQUEST_BIT Set if WML accepted and HTML NOT accepted by client.
// The of 'Accept: */*' option is ignored
#define INFO_WML_REQUEST_BIT 0x00000100
#endif
#define DISPLAY_FULL_PAGE_BIT 0x00010000
#define CONTROL_RETURN_METHOD_RIGHTS_BIT 0x08000000
#define CONTROL_NO_AUTHENTICATION_OPTION_ENABLED_BIT 0x10000000
#define CONTROL_NO_LOGIN_OPTION_ENABLED_BIT 0x20000000
#define CONTROL_DEINITIALIZATION_BIT 0x40000000
#define CONTROL_INITIALIZATION_BIT 0x80000000
#define INFO_RIGHTS_BITS (INFO_SUPERVISOR_PRIVILEGES_BIT|INFO_CONSOLE_OPERATOR_PRIVILEGES_BIT|INFO_LOGGED_IN_BIT)
///////////////////////////////////////////////////////////////////////////////////////
///// FILE MODE FLAGS & APIs
///////////////////////////////////////////////////////////////////////////////////////
#define FILE_MODE_DATE_TIME_STAMP 0x00000001
#define FILE_MODE_APPEND_TO_EOF 0x00000002
#define VALID_FILE_MODE_FLAG_BITS (FILE_MODE_DATE_TIME_STAMP | FILE_MODE_APPEND_TO_EOF)
extern int HttpActivateFileMode(HINTERNET hndl, UINT32 netWareFileHandle, UINT32 fileModeFlags);
extern int HttpDeActivateFileMode(HINTERNET hndl);
///////////////////////////////////////////////////////////////////////////////////////
//
// Service Helper Routines
//
extern int HttpReturnPostDataBuffer(IN HINTERNET hndl, char **pPostDataBuffer, UINT32_PTR lpPostDataLen);
extern int serviceGetConnectionNumber(
IN HINTERNET hrequest,
IN OUT UINT32_PTR lpNetWareConnectionNumber,
IN OUT UINT32_PTR lpNetWareTaskNumber);
extern int serviceGetLocalNDSContext(
IN HINTERNET hrequest,
IN OUT int *lpContext);
extern int serviceGetRemoteNDSContext(
IN HINTERNET hrequest,
IN int addressType,
IN int addressSize,
IN char *address,
IN OUT int *lpContext);
//
//
//
extern int HttpGetContext(
IN HINTERNET hndl,
UINT32_PTR *pContext);
extern int HttpSetContext(
IN HINTERNET hndl,
UINT32_PTR pContext);
extern int HttpReturnPutDataBuffer(
IN HINTERNET hndl,
UINT32_PTR lpTotalFileSize,
UINT32_PTR lpCurrentFileOffset,
char **pPutDataBuffer,
UINT32_PTR lpPutDataLen);
extern UINT32 HttpInternetTimeToLocalTime(UINT32 UTC, char *pzOptionalStringOutputBuffer);
extern UINT32 HttpExtractInternetTimeFromString(char *string);
extern UINT32 HttpLocalTimeToInternetTime(UINT32 DOSDateAndTime);
extern int HttpInternetTimeToString(UINT32 utcTime, void *ins);
extern int HttpLocalTimeToString(UINT32 DOSDateAndTime, char *ins);
extern int HttpCheckIfModifiedSinceTime(HINTERNET hndl, int callerInternetTime);
extern BOOL HttpStackIpInformation(
UINT32 infoLevel,
void *infoBuffer,
UINT32_PTR numberOfIpAddresses,
void **addrInfo,
UINT32_PTR listenPortNumber);
extern void HttpUnConvertName(char *src, char *dst, UINT32 srclen);
extern void HttpConvertName(char *src, char *dst, UINT32 srclen);
extern void HttpConvertCP1252ToISO88591(char *src, char *dst, UINT32 srclen);
extern void HttpConvertISO88591ToCP1252(char *src, char *dst, UINT32 srclen);
extern void HttpConvertNDSName(char *src, char *dst, UINT32 srclen);
extern BOOL HttpScanServiceMethods(int infoBits, UINT32 index, char *serviceName, char *serviceNameTag, UINT32_PTR nextIndex);
extern UINT32 HttpServiceMethodTOC(int infoBits, UINT32 TOCLevel, UINT32 szBuffer, void *pBuffer, UINT32_PTR szUsed);
UINT32 HttpReturnLoginServiceTagString(HINTERNET hndl, char *buffer, UINT32 size);
extern int HttpExtractSrcAddress(HINTERNET hndl, int *pSrcIPAddr, int *pSrcIPPort, char *pzSrcIPAddrBuf, char *pzSrcPortBuf);
extern int HttpExtractDestAddress(HINTERNET hndl, int *pDestIPAddr, int *pDestIPPort, char *pzDestIPAddrBuf, char *pzDestPortBuf);
extern int HttpConvertStringToIPv4Address(char *pString, UINT32_PTR pAddressValue, UINT32_PTR pPortValue);
// CULL.C
extern int HttpFindNameAndValue(char *pBuffer, char *pzTokenName, char *pzTokenValue, int *pzTokenValueMaxLen);
extern int HttpParseBuffer(
char *pBuffer,
int index,
char *pzTokenName,
int *pzTokenNameMaxLen,
char *pzTokenValue,
int *pzTokenValueMaxLen,
char **pzBufferProcessTo);
// CONFIG.C
int HttpOpenPort(
LONG IPAddress, // not used (yet), must be ZERO
WORD portNumber,
LONG flags);
int HttpClosePort(
LONG IPAddress, // not used (yet), must be ZERO
WORD portNumber);
// return from the HttpServiceMethodTOC api
struct TOCsearch
{
UINT32 numberOfTOCHeadings;
char TOCSubHeadingCount;
char TOCHeadingFlag;
char TOCHeadingName[1];
// more data follows
};
//
// Debugger Screen Control Prototypes
//
extern BOOL HttpDebugScreenStatus(void);
extern int HttpEnableScreen(void), HttpDisableScreen(void);
//
//
//
//
// File Types
//
#define FILE_TYPE_UNK 0x00000000
#define FILE_TYPE_JPEG 0x00000001
#define FILE_TYPE_GIF 0x00000002
#define FILE_TYPE_PNG 0x00000003
#define FILE_TYPE_ZIP 0x00000004
#define FILE_TYPE_HTML 0x00000005
#define FILE_TYPE_WAV 0x00000006
#define FILE_TYPE_AU 0x00000007
#define FILE_TYPE_MIDI 0x00000008
#define FILE_TYPE_XML 0x00000009
#define FILE_TYPE_XLS 0x0000000a
#endif /* __HTTPEXP_H__ */
// If you are registering a method that is in one of these categories you need not use the name
// in the TOC structure because we translate these name. If you are registering in one of these
// just make sure that you category number is correct and pass a pointer to a null and the name.
// This will insure that you method shows up under the correct category.
#define STR_HEALTH_CONTROL "Health Monitors" //Old Name, New Name is Diagnose Server
#define HEALTH_CONTROL_ID 1 //Use the for your TOCHeadingNumber
#define STR_SERVER_CONTROL "Server Management" //OLD Name, New Name is Manage Server
#define SERVER_CONTROL_ID 2 //Use the for your TOCHeadingNumber
#define STR_SOFTWARE_CONTROL "Application Management" //Old Name, New Name is Manage Applications
#define SOFTWARE_CONTROL_ID 3 //Use the for your TOCHeadingNumber
#define STR_HARDWARE_CONTROL "Hardware Management" //Old name, New Name is Manage Hardware
#define HARDWARE_CONTROL_ID 4 //Use the for your TOCHeadingNumber
#define STR_DS_CONTROL "NDS Management" //Old Name, New Name is Manage eDirectory
#define DS_CONTROL_ID 5 //Use the for your TOCHeadingNumber
#define STR_GROUP_CONTROL "Server Groups" //Old Name, New Name is Use Server Groups
#define GROUP_CONTROL_ID 6 //Use the for your TOCHeadingNumber
#define STR_REMOTE_CONTROL "Remote Server Access" //Old Name, New Name is Access Other Servers
#define REMOTE_CONTROL_ID 7 //Use the for your TOCHeadingNumber
#define STR_VOLUME_CONTROL "Volume Management" //Obsolete
/* ****************************************************************************
* *
* Common Logger Definitions & Prototypes *
* *
**************************************************************************** */
//
// Common Logger Levels
//
#define LVL_EMERGENCY 0
#define LVL_ALERT 1
#define LVL_ERROR 2
#define LVL_WARNING 3
#define LVL_AUTH 4
#define LVL_SECURITY 5
#define LVL_USAGE 6
#define LVL_SYSTEM 7
#define LVL_IMPORTANT 8
#define LVL_DEBUG 9
#define LVL_MAX (LVL_DEBUG + 1)
//
// Common Logger Options
//
#define OPTION_LANG 0 //Requires pointer to ASCIIZ String
#define OPTION_DUR 1 //Requires integer value
#define OPTION_PS 2 //Requires integer value
#define OPTION_ID 3 //Requires pointer to ASCIIZ String
#define OPTION_SRC_IP 4 //Requires pointer to ASCIIZ String
#define OPTION_SRC_FQDN 5 //Requires pointer to ASCIIZ String
#define OPTION_SRC_NAME 6 //Requires pointer to ASCIIZ String
#define OPTION_SRC_PORT 7 //Requires integer value
#define OPTION_SRC_USR 8 //Requires pointer to ASCIIZ String
#define OPTION_SRC_MAIL 9 //Requires pointer to ASCIIZ String
#define OPTION_DST_IP 10 //Requires pointer to ASCIIZ String
#define OPTION_DST_FQDN 11 //Requires pointer to ASCIIZ String
#define OPTION_DST_NAME 12 //Requires pointer to ASCIIZ String
#define OPTION_DST_PORT 13 //Requires integer value
#define OPTION_DST_USR 14 //Requires pointer to ASCIIZ String
#define OPTION_DST_MAIL 15 //Requires pointer to ASCIIZ String
#define OPTION_REL_IP 16 //Requires pointer to ASCIIZ String
#define OPTION_REL_FQDN 17 //Requires pointer to ASCIIZ String
#define OPTION_REL_NAME 18 //Requires pointer to ASCIIZ String
#define OPTION_REL_PORT 19 //Requires integer value
#define OPTION_REL_USR 20 //Requires pointer to ASCIIZ String
#define OPTION_REL_MAIL 21 //Requires pointer to ASCIIZ String
#define OPTION_VOL 22 //Requires integer value
#define OPTION_VOL_SENT 23 //Requires integer value
#define OPTION_VOL_RCVD 24 //Requires integer value
#define OPTION_CNT 25 //Requires integer value
#define OPTION_CNT_SENT 26 //Requires integer value
#define OPTION_CNT_RCVD 27 //Requires integer value
#define OPTION_PROG_FILE 28 //Requires pointer to ASCIIZ String
#define OPTION_PROG_LINE 29 //Requires integer value
#define OPTION_STAT 30 //Requires pointer to ASCIIZ String
#define OPTION_TTY 31 //Requires pointer to ASCIIZ String
#define OPTION_DOC 32 //Requires pointer to ASCIIZ String
#define OPTION_PROT 33 //Requires pointer to ASCIIZ String
#define OPTION_CMD 34 //Requires pointer to ASCIIZ String
#define OPTION_MSG 35 //Requires pointer to ASCIIZ String
#define OPTION_MAX (OPTION_MSG + 1)
//
// Common Logger Error Codes
//
#define LOGGER_ERR_BAD_HANDLE 1
#define LOGGER_ERR_BAD_LEVEL 2
#define LOGGER_ERR_BAD_OPTION_NUMBER 3
#define LOGGER_ERR_OUT_OF_RANGE 4
//
// Common Logger Prototypes (Exported)
//
extern int HttpLogOpen(char *pzFileName, int holdFlag, int *pHandle);
extern int HttpLogEntry(int pHandle, int level, HINTERNET hndl, char *pzProg, int optionCount, int *pOptions, ...);
extern int HttpLogClose(int pHandle);
extern int HttpDisableLogger(void);
extern int HttpEnableLogger(void);
extern BOOL HttpLoggerStatus(void);
extern int HttpResetSystemLogFile(void);
extern int HttpViewSysLogFile(HINTERNET hndl);
//
// Mail APIS
//
extern int SMTPSendMailgram(
BOOL waitOnCompletionFlag,
int rcptListCount,// MAX RCPT LIST COUNT = 8
char **pzRcptList,
char *pzFrom, // OPTIONAL: NULL MAX LEN = 127
char *pzSender, // OPTIONAL: NULL MAX LEN = 127
char *pzSubject, // OPTIONAL: NULL MAX LEN = 127
char *pzBody); // OPTIONAL: NULL MAX LEN = 1023
extern BOOL SMTPSetMailServerName(char *pMailServerName, int primaryOrAlternateFlag);
// Includes null
#define MaximumSizeOfRcpt 128
#define MaximumSizeOfFrom 128
#define MaximumSizeOfSender 128
#define MaximumSizeOfSubject 128
#define MaximumSizeOfBody 1024