147 lines
3.4 KiB
C
147 lines
3.4 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
|
|
|
|
//
|
|
// 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_ULONG, 9)
|
|
#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
|
|
|
|
//
|
|
// 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
|
|
|
|
|