xpmgr/BuildTools/Include/WdsBp.h

169 lines
4.5 KiB
C

/*++
Copyright (c) 2006 Microsoft Corporation
Module Name:
WdsBp.h
Abstract:
This module defines data structure and public APIs which are used to parse
and construct packets for WDS Network Boot Program.
Environment:
User Mode
--*/
#ifndef __WDSBP_H__
#define __WDSBP_H__
#ifdef __cplusplus
extern "C"
{
#endif
//
// Calling Convention.
//
#define WDSBPAPI __stdcall
//
// Options used by WDS Network Boot Program.
//
#define WDSBP_MAKE_OPTION(_Pk, _Type, _Id) ((_Type) | ((_Pk) << 8) | ((_Id) << 16))
//
// Packet Types.
//
#define WDSBP_PK_TYPE_DHCP 1
#define WDSBP_PK_TYPE_WDSNBP 2
#define WDSBP_PK_TYPE_BCD 4
//
// Option Types.
//
#define WDSBP_OPT_TYPE_NONE 0
#define WDSBP_OPT_TYPE_BYTE 1
#define WDSBP_OPT_TYPE_USHORT 2
#define WDSBP_OPT_TYPE_ULONG 3
#define WDSBP_OPT_TYPE_WSTR 4
#define WDSBP_OPT_TYPE_STR 5
#define WDSBP_OPT_TYPE_IP4 6
//
// Boot Program Options.
//
#define WDSBP_OPT_ARCHITECTURE WDSBP_MAKE_OPTION(WDSBP_PK_TYPE_WDSNBP, WDSBP_OPT_TYPE_USHORT, 1)
#define WDSBP_OPT_NEXT_ACTION WDSBP_MAKE_OPTION(WDSBP_PK_TYPE_WDSNBP, WDSBP_OPT_TYPE_BYTE, 2)
#define WDSBP_OPT_POLL_INTERVAL WDSBP_MAKE_OPTION(WDSBP_PK_TYPE_WDSNBP, WDSBP_OPT_TYPE_USHORT, 3)
#define WDSBP_OPT_POLL_RETRY_COUNT WDSBP_MAKE_OPTION(WDSBP_PK_TYPE_WDSNBP, WDSBP_OPT_TYPE_USHORT, 4)
#define WDSBP_OPT_REQUEST_ID WDSBP_MAKE_OPTION(WDSBP_PK_TYPE_WDSNBP, WDSBP_OPT_TYPE_ULONG, 5)
#define WDSBP_OPT_MESSAGE WDSBP_MAKE_OPTION(WDSBP_PK_TYPE_WDSNBP, WDSBP_OPT_TYPE_STR, 6)
#define WDSBP_OPT_VERSION_QUERY WDSBP_MAKE_OPTION(WDSBP_PK_TYPE_WDSNBP, WDSBP_OPT_TYPE_NONE, 7)
#define WDSBP_OPT_SERVER_VERSION WDSBP_MAKE_OPTION(WDSBP_PK_TYPE_WDSNBP, WDSBP_OPT_TYPE_ULONG, 8)
#define WDSBP_OPT_REFERRAL_SERVER WDSBP_MAKE_OPTION(WDSBP_PK_TYPE_WDSNBP, WDSBP_OPT_TYPE_IP4, 9)
#define WDSBP_OPT_PXE_CLIENT_PROMPT WDSBP_MAKE_OPTION(WDSBP_PK_TYPE_WDSNBP, WDSBP_OPT_TYPE_BYTE, 11)
#define WDSBP_OPT_PXE_PROMPT_DONE WDSBP_MAKE_OPTION(WDSBP_PK_TYPE_WDSNBP, WDSBP_OPT_TYPE_BYTE, 12)
#define WDSBP_OPT_NBP_VER WDSBP_MAKE_OPTION(WDSBP_PK_TYPE_WDSNBP, WDSBP_OPT_TYPE_USHORT, 13)
#define WDSBP_OPT_ACTION_DONE WDSBP_MAKE_OPTION(WDSBP_PK_TYPE_WDSNBP, WDSBP_OPT_TYPE_BYTE, 14)
#define WDSBP_OPT_ALLOW_SERVER_SELECTION WDSBP_MAKE_OPTION(WDSBP_PK_TYPE_WDSNBP, WDSBP_OPT_TYPE_BYTE, 15)
#define WDSBP_OPT_BCD_FILE_PATH WDSBP_MAKE_OPTION(WDSBP_PK_TYPE_BCD, WDSBP_OPT_TYPE_STR, 252)
//
// Helper Macros.
//
#define WDSBP_IS_PK_TYPE(_Value, _Type) (((_Value) & (_Type)) == (_Type))
//
// Values for WDSBP_OPT_NEXT_ACTION Option.
//
#define WDSBP_OPTVAL_ACTION_APPROVAL 1
#define WDSBP_OPTVAL_ACTION_REFERRAL 3
#define WDSBP_OPTVAL_ACTION_ABORT 5
//
// Values for WDSBP_OPT_PXE_CLIENT_PROMPT and WDSBP_OPT_PXE_PROMPT_DONE.
//
#define WDSBP_OPTVAL_PXE_PROMPT_OPTIN 1
#define WDSBP_OPTVAL_PXE_PROMPT_NOPROMPT 2
#define WDSBP_OPTVAL_PXE_PROMPT_OPTOUT 3
//
// Values for WDSBP_OPT_NBP_VER.
//
#define WDSBP_OPTVAL_NBP_VER_7 0x0700
//
// APIs.
//
DWORD
WDSBPAPI
WdsBpParseInitialize(
__in_bcount(uPacketLen) PVOID pPacket,
__in ULONG uPacketLen,
__out_opt PBYTE pbPacketType,
__out HANDLE *phHandle
);
DWORD
WDSBPAPI
WdsBpInitialize(
__in BYTE bPacketType,
__out HANDLE *phHandle
);
DWORD
WDSBPAPI
WdsBpCloseHandle(
__in HANDLE hHandle
);
DWORD
WDSBPAPI
WdsBpQueryOption(
__in HANDLE hHandle,
__in ULONG uOption,
__in ULONG uValueLen,
__out_bcount_part(uValueLen, *puBytes) PVOID pValue,
__out PULONG puBytes
);
DWORD
WDSBPAPI
WdsBpAddOption(
__in HANDLE hHandle,
__in ULONG uOption,
__in ULONG uValueLen,
__in_bcount(uValueLen) PVOID pValue
);
DWORD
WDSBPAPI
WdsBpGetOptionBuffer(
__in HANDLE hHandle,
__in ULONG uBufferLen,
__out_bcount_part(uBufferLen, *puBytes) PVOID pBuffer,
__out PULONG puBytes
);
#ifdef __cplusplus
}
#endif
#endif