|
|
//////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) Microsoft Corporation
//
// Module Name:
//
// aaaamontr.h
//
// Abstract:
//
// This file contains definitions which are needed by AAAAMONTR.DLL
// and all NetSh helper DLLs which register under it.
//
//////////////////////////////////////////////////////////////////////////////
#ifndef _AAAAMONTR_H_
#define _AAAAMONTR_H_
#if _MSC_VER > 1000
#pragma once
#endif
#ifdef __cplusplus
extern "C" { #endif
//{1D0FA29B-E93E-11d2-A91E-009027450464}
#define AAAAMONTR_GUID \
{ 0x1D0FA29B, 0xE93E, 0x11d2, { 0xA9, 0x1E, 0x00, 0x90, 0x27, 0x45, 0x04, 0x64 } }
#define AAAAMONTR_VERSION_50 0x0005000
#define AAAAMONTR_OS_BUILD_NT40 1381
//
// Enumerations for types of arguments (see AAAAMON_CMD_ARG)
//
#define AAAAMONTR_CMD_TYPE_STRING 0x1
#define AAAAMONTR_CMD_TYPE_ENUM 0x2
//
// Macros to operate on AAAAMON_CMD_ARG's
//
#define AAAAMON_CMD_ARG_GetPsz(pArg) \
(((pArg)->rgTag.bPresent) ? (pArg)->Val.pszValue : NULL)
#define AAAAMON_CMD_ARG_GetDword(pArg) \
(((pArg)->rgTag.bPresent) ? (pArg)->Val.dwValue : -1)
//
// Structure defining a command line argument
//
typedef struct _AAAAMON_CMD_ARG { IN DWORD dwType; // AAAAMONTR_CMD_TYPE_*
IN TAG_TYPE rgTag; // The tag for this command
IN TOKEN_VALUE* rgEnums; // The enumerations for this arg
IN DWORD dwEnumCount; // Count of enums
union { OUT PWCHAR pszValue; // Valid only for AAAAMONTR_CMD_TYPE_STRING
OUT DWORD dwValue; // Valid only for AAAAMONTR_CMD_TYPE_ENUM
} Val; } AAAAMON_CMD_ARG, *PAAAAMON_CMD_ARG;
//
// Api's that aaaamontr requires of its helpers
//
typedef DWORD (WINAPI AAAA_CONTEXT_ENTRY_FN)( IN PWCHAR pszServer, IN DWORD dwBuild, IN PTCHAR *pptcArguments, IN DWORD dwArgCount, IN DWORD dwFlags, OUT PWCHAR pwcNewContext ); typedef AAAA_CONTEXT_ENTRY_FN *PAAAA_CONTEXT_ENTRY_FN;
typedef DWORD (WINAPI AAAA_CONTEXT_DUMP_FN)( IN HANDLE hFile ); typedef AAAA_CONTEXT_DUMP_FN* PAAAA_CONTEXT_DUMP_FN;
//
// Api's that aaaamontr exposes to its helpers
//
typedef PVOID (WINAPI AAAA_ALLOC_FN)( IN DWORD dwBytes, IN BOOL bZero ); typedef AAAA_ALLOC_FN* PAAAA_ALLOC_FN;
typedef VOID (WINAPI AAAA_FREE_FN)( IN PVOID pvData ); typedef AAAA_FREE_FN* PAAAA_FREE_FN;
typedef PWCHAR (WINAPI AAAA_STRDUP_FN)( IN PWCHAR pwszSrc ); typedef AAAA_STRDUP_FN* PAAAA_STRDUP_FN;
typedef LPDWORD (WINAPI AAAA_DWORDDUP_FN)( IN DWORD dwSrc ); typedef AAAA_DWORDDUP_FN* PAAAA_DWORDDUP_FN;
typedef DWORD (WINAPI AAAA_CREATE_DUMP_FILE_FN)( IN PWCHAR pwszName, OUT PHANDLE phFile ); typedef AAAA_CREATE_DUMP_FILE_FN* PAAAA_CREATE_DUMP_FILE_FN;
typedef VOID (WINAPI AAAA_CLOSE_DUMP_FILE_FN)( HANDLE hFile ); typedef AAAA_CLOSE_DUMP_FILE_FN* PAAAA_CLOSE_DUMP_FILE_FN;
typedef DWORD (WINAPI AAAA_GET_OS_VERSION_FN)( IN PWCHAR pwszRouter, OUT LPDWORD lpdwVersion); typedef AAAA_GET_OS_VERSION_FN* PAAAA_GET_OS_VERSION_FN; typedef DWORD (WINAPI AAAA_GET_TAG_TOKEN_FN)( IN HANDLE hModule, IN PWCHAR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN PTAG_TYPE pttTagToken, IN DWORD dwNumTags, OUT PDWORD pdwOut ); typedef AAAA_GET_TAG_TOKEN_FN* PAAAA_GET_TAG_TOKEN_FN;
typedef DWORD (WINAPI AAAA_PARSE_FN)( IN PWCHAR* ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN BOOL* pbDone, OUT AAAAMON_CMD_ARG* pAaaaArgs, IN DWORD dwAaaaArgCount); typedef AAAA_PARSE_FN* PAAAA_PARSE_FN;
typedef BOOL (WINAPI AAAA_IS_HELP_TOKEN_FN)( PWCHAR pwszToken ); typedef AAAA_IS_HELP_TOKEN_FN* PAAAA_IS_HELP_TOKEN_FN;
typedef PWCHAR (WINAPI AAAA_ASSIGN_FROM_TOKENS_FN)( IN HINSTANCE hModule, IN PWCHAR pwszTokenTkn, IN PWCHAR pwszTokenCmd); typedef AAAA_ASSIGN_FROM_TOKENS_FN* PAAAA_ASSIGN_FROM_TOKENS_FN;
//
// Defines information exported to all aaaa helpers by the
// aaaamontr module.
//
typedef struct _AAAAMONTR_ATTRIBUTES { union { ULONGLONG _ullAlign;
struct { DWORD dwVersion; DWORD dwReserved; }; };
// Aaaamontr functions (common utilities)
//
PAAAA_ALLOC_FN pfnAlloc; PAAAA_FREE_FN pfnFree; PAAAA_STRDUP_FN pfnStrDup; PAAAA_DWORDDUP_FN pfnDwordDup; PAAAA_CREATE_DUMP_FILE_FN pfnCreateDumpFile; PAAAA_CLOSE_DUMP_FILE_FN pfnCloseDumpFile; PAAAA_GET_OS_VERSION_FN pfnGetOsVersion; PAAAA_GET_TAG_TOKEN_FN pfnGetTagToken; PAAAA_PARSE_FN pfnParse; PAAAA_IS_HELP_TOKEN_FN pfnIsHelpToken; PAAAA_ASSIGN_FROM_TOKENS_FN pfnAssignFromTokens;
} AAAAMONTR_ATTRIBUTES, *PAAAAMONTR_ATTRIBUTES;
#ifdef __cplusplus
} #endif
#endif // _AAAAMONTR_H_
|