move pcucontrol package into pcucontrol module.
[pcucontrol.git] / pcucontrol / models / intelamt / Include / iamt_api.h
diff --git a/pcucontrol/models/intelamt/Include/iamt_api.h b/pcucontrol/models/intelamt/Include/iamt_api.h
new file mode 100644 (file)
index 0000000..afd051c
--- /dev/null
@@ -0,0 +1,592 @@
+/**********************************************************************
+**                                                                   **
+**                I N T E L   P R O P R I E T A R Y                  **
+**                                                                   **
+**   COPYRIGHT (c)  1993 - 2006       BY  INTEL  CORPORATION.  ALL   **
+**   RIGHTS RESERVED.   NO PART OF THIS PROGRAM OR PUBLICATION MAY   **
+**   BE  REPRODUCED,   TRANSMITTED,   TRANSCRIBED,   STORED  IN  A   **
+**   RETRIEVAL SYSTEM, OR TRANSLATED INTO ANY LANGUAGE OR COMPUTER   **
+**   LANGUAGE IN ANY FORM OR BY ANY MEANS, ELECTRONIC, MECHANICAL,   **
+**   MAGNETIC,  OPTICAL,  CHEMICAL, MANUAL, OR OTHERWISE,  WITHOUT   **
+**   THE PRIOR WRITTEN PERMISSION OF :                               **
+**                                                                   **
+**                      INTEL  CORPORATION                           **
+**                                                                   **
+**                2200 MISSION COLLEGE BOULEVARD                     **
+**                                                                   **
+**             SANTA  CLARA,  CALIFORNIA  95052-8119                 **
+**                                                                   **
+**********************************************************************/
+
+//+--------------------------------------------------------------------
+//
+//
+//  File:       iamt_api.h
+//
+//  Contents:   Header file for the IntelĀ® AMT storage library.
+//
+//---------------------------------------------------------------------
+
+
+#ifndef _PTHI_API_
+#define _PTHI_API_
+
+#include <wchar.h>
+#ifdef _WIN32
+#include <windows.h>
+#include <Wincrypt.h>
+#include <tchar.h>
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* 
+To enable compile time checking for Intel(r) AMT2 compatible usage use the following definition:
+#define ENFORCE_IAMT2_USAGE
+*/
+
+#define ISVS_VERSION_MAJOR      2
+#define ISVS_VERSION_MINOR      0
+
+
+#ifndef VOID
+typedef void                VOID;
+#endif
+typedef char                CHAR;
+typedef unsigned char       UINT8;
+typedef unsigned short      UINT16;
+typedef unsigned int        UINT32;
+
+#ifndef _WIN32
+typedef char _TCHAR;
+#endif
+
+typedef UINT8 PT_UUID[16];
+
+typedef UINT32  ISVS_APPLICATION_HANDLE;
+
+#define ISVS_APPLICATION_NAME_FILTER    0xFFFFFFF0
+#define ISVS_VENDOR_NAME_FILTER         0xFFFFFFF1
+#define ISVS_INVALID_HANDLE             0xFFFFFFFF
+
+
+typedef UINT32 PT_BOOLEAN;
+static const   PT_BOOLEAN PTHI_FALSE = 0;
+static const   PT_BOOLEAN PTHI_TRUE  = 1;
+
+
+// ------------------------
+// ISVS_VERSION
+// ------------------------
+typedef struct _ISVS_VERSION
+{
+       UINT8   MajorNumber;
+       UINT8   MinorNumber;
+
+} ISVS_VERSION;
+
+
+// ------------------------
+// PTSDK_UNICODE_STRING
+// ------------------------
+// UTF16 Unicode String
+//  Length - The length in bytes of the string stored in Buffer.
+//  MaximumLength - The maximum length in bytes of Buffer.
+//  Buffer - Points to a buffer used to contain a string of wide characters.
+//
+// PTSDK_UNICODE_STRING types may not be null terminated
+//
+typedef struct _PTSDK_UNICODE_STRING
+{
+    UINT16  Length;
+    UINT16  MaximumLength;
+    UINT16  *Buffer;
+
+} PTSDK_UNICODE_STRING;
+
+
+
+
+// -----------------
+// ISVS_GROUP
+// -----------------
+typedef UINT32  ISVS_GROUP_HANDLE;
+
+typedef UINT32 ISVS_GROUP_PERMISSIONS;
+static const   ISVS_GROUP_PERMISSIONS ISVS_GROUP_PERMISSIONS_READ_ONLY = 1;
+static const   ISVS_GROUP_PERMISSIONS ISVS_GROUP_PERMISSIONS_READ_WRITE = 2;
+
+typedef struct _PTSDK_PERMISSIONS_GROUP_ATTRIBUTES
+{
+    PTSDK_UNICODE_STRING     Name;
+    ISVS_GROUP_PERMISSIONS   Permissions;
+
+} PTSDK_PERMISSIONS_GROUP_ATTRIBUTES;
+
+
+// -----------------
+// ISVS_BLOCK
+// -----------------
+
+typedef UINT32  ISVS_BLOCK_HANDLE;
+
+typedef struct _PTSDK_BLOCK_ATTRIBUTES
+{
+    UINT32                 BlockSize;
+    PT_BOOLEAN             BlockHidden;
+    PTSDK_UNICODE_STRING   BlockName;
+
+} PTSDK_BLOCK_ATTRIBUTES;
+
+
+// -----------------
+// ISVS_APPLICATION
+// -----------------
+
+typedef struct _PTSDK_APPLICATION_ATTRIBUTES
+{
+    PTSDK_UNICODE_STRING    VendorName;
+    PTSDK_UNICODE_STRING    ApplicationName;
+
+} PTSDK_APPLICATION_ATTRIBUTES;
+
+
+// ------------
+// PT_STATUS
+// ------------
+
+typedef UINT32 PT_STATUS;
+
+static const PT_STATUS PT_STATUS_SUCCESS                          = 0;
+static const PT_STATUS PT_STATUS_INTERNAL_ERROR                   = 0x0001;
+static const PT_STATUS PT_STATUS_NOT_READY                        = 0x0002;
+static const PT_STATUS PT_STATUS_INVALID_PT_MODE                  = 0x0003;
+static const PT_STATUS PT_STATUS_INVALID_MESSAGE_LENGTH           = 0x0004;
+static const PT_STATUS PT_STATUS_TABLE_FINGERPRINT_NOT_AVAILABLE  = 0x0005;
+static const PT_STATUS PT_STATUS_INTEGRITY_CHECK_FAILED           = 0x0006;
+static const PT_STATUS PT_STATUS_UNSUPPORTED_ISVS_VERSION         = 0x0007;
+static const PT_STATUS PT_STATUS_APPLICATION_NOT_REGISTERED       = 0x0008;
+static const PT_STATUS PT_STATUS_INVALID_REGISTRATION_DATA        = 0x0009;
+static const PT_STATUS PT_STATUS_APPLICATION_DOES_NOT_EXIST       = 0x000a;
+static const PT_STATUS PT_STATUS_NOT_ENOUGH_STORAGE               = 0x000b;
+static const PT_STATUS PT_STATUS_INVALID_NAME                     = 0x000c;
+static const PT_STATUS PT_STATUS_BLOCK_DOES_NOT_EXIST             = 0x000d;
+static const PT_STATUS PT_STATUS_INVALID_BYTE_OFFSET              = 0x000e;
+static const PT_STATUS PT_STATUS_INVALID_BYTE_COUNT               = 0x000f;
+static const PT_STATUS PT_STATUS_NOT_PERMITTED                    = 0x0010;
+static const PT_STATUS PT_STATUS_NOT_OWNER                        = 0x0011;
+static const PT_STATUS PT_STATUS_BLOCK_LOCKED_BY_OTHER            = 0x0012;
+static const PT_STATUS PT_STATUS_BLOCK_NOT_LOCKED                 = 0x0013;
+static const PT_STATUS PT_STATUS_INVALID_GROUP_PERMISSIONS        = 0x0014;
+static const PT_STATUS PT_STATUS_GROUP_DOES_NOT_EXIST             = 0x0015;
+static const PT_STATUS PT_STATUS_INVALID_MEMBER_COUNT             = 0x0016;
+static const PT_STATUS PT_STATUS_MAX_LIMIT_REACHED                = 0x0017;
+static const PT_STATUS PT_STATUS_INVALID_AUTH_TYPE                = 0x0018;
+static const PT_STATUS PT_STATUS_AUTHENTICATION_FAILED            = 0x0019;
+static const PT_STATUS PT_STATUS_INVALID_DHCP_MODE                = 0x001a;
+static const PT_STATUS PT_STATUS_INVALID_IP_ADDRESS               = 0x001b;
+static const PT_STATUS PT_STATUS_INVALID_DOMAIN_NAME              = 0x001c;
+
+static const PT_STATUS PT_STATUS_REQUEST_UNEXPECTED               = 0x001e;
+static const PT_STATUS PT_STATUS_INVALID_TABLE_TYPE               = 0x001f;
+static const PT_STATUS PT_STATUS_INVALID_PROVISIONING_MODE        = 0x0020;
+static const PT_STATUS PT_STATUS_UNSUPPORTED_OBJECT               = 0x0021;
+static const PT_STATUS PT_STATUS_INVALID_TIME                     = 0x0022;
+static const PT_STATUS PT_STATUS_INVALID_INDEX                    = 0x0023;
+static const PT_STATUS PT_STATUS_INVALID_PARAMETER                = 0x0024;
+
+static const PT_STATUS PT_STATUS_FLASH_WRITE_LIMIT_EXCEEDED       = 0x0026;
+
+static const PT_STATUS PT_STATUS_NETWORK_IF_ERROR_BASE            = 0x0800;
+static const PT_STATUS PT_STATUS_SDK_DEFINED_ERROR_BASE           = 0x1000;
+
+static const PT_STATUS PTSDK_STATUS_INTERNAL_ERROR                = 0x1000;
+static const PT_STATUS PTSDK_STATUS_NOT_INITIALIZED               = 0x1001;
+static const PT_STATUS PTSDK_STATUS_LIB_VERSION_UNSUPPORTED       = 0x1002;
+static const PT_STATUS PTSDK_STATUS_INVALID_PARAM                 = 0x1003;
+static const PT_STATUS PTSDK_STATUS_RESOURCES                     = 0x1004;
+static const PT_STATUS PTSDK_STATUS_HARDWARE_ACCESS_ERROR         = 0x1005;
+static const PT_STATUS PTSDK_STATUS_REQUESTOR_NOT_REGISTERED      = 0x1006;
+static const PT_STATUS PTSDK_STATUS_NETWORK_ERROR                 = 0x1007;
+static const PT_STATUS PTSDK_STATUS_PARAM_BUFFER_TOO_SHORT        = 0x1008;
+static const PT_STATUS PTSDK_STATUS_COM_NOT_INITIALIZED_IN_THREAD = 0x1009;
+static const PT_STATUS PTSDK_STATUS_URL_REQUIRED                                 = 0x100a;
+
+// -------------------
+// IN/OUT definitions
+// -------------------
+#ifdef IN
+#undef IN
+#endif
+#define IN      const   /* input parameter (const)  */
+#define OUT             /* output parameter         */
+#define INOUT           /* input & output parameter */
+#define OPTIONAL        /* optional parameter       */
+
+
+#undef FALSE
+#undef TRUE
+#undef NULL
+
+#define FALSE   0
+#define TRUE    1
+#define NULL    0
+
+typedef int             BOOL;
+typedef unsigned long   ULONG;
+typedef char *          PCHAR;
+typedef unsigned long * PULONG;
+
+typedef struct _SESSION_HANDLE *SESSION_HANDLE;
+typedef struct _SESSION_AUTHENTICATION_INFO SESSION_AUTHENTICATION_INFO;
+
+
+PT_STATUS
+ISVS_Initialize (
+    INOUT   UINT32 *LibMajorVersion,
+    INOUT   UINT32 *LibMinorVersion,
+    OUT     UINT32 *LibBuildNumber
+    );
+
+
+PT_STATUS
+ISVS_Uninitialize();
+#ifdef _WIN32
+
+PT_STATUS
+ISVS_InitializeCOMinThread();
+
+PT_STATUS 
+ISVS_UninitializeCOMinThread();
+
+#endif
+
+
+#ifndef ENFORCE_IAMT2_USAGE
+// ISVS 1.0 support 
+PT_STATUS
+ISVS_RegisterApplication(
+    OUT SESSION_HANDLE              *SessionHandle,
+    IN wchar_t                     *Username    OPTIONAL,
+    IN wchar_t                     *Password    OPTIONAL,
+    IN CHAR                        *TargetUrl,
+    IN PT_UUID                     MachineUUID  OPTIONAL,
+    IN PTSDK_UNICODE_STRING        *VendorName,
+    IN PTSDK_UNICODE_STRING        *AppName,
+    IN PTSDK_UNICODE_STRING        *EnterpriseName
+    );
+#endif
+
+
+PT_STATUS
+ISVS_RegisterApplicationEx(
+    OUT SESSION_HANDLE             *SessionHandle,
+    IN  wchar_t                    *Username    OPTIONAL,
+    IN  wchar_t                    *Password    OPTIONAL,
+    IN  CHAR                       *TargetUrl   ,
+    IN  PT_UUID                    MachineUUID  OPTIONAL,
+    IN  PTSDK_UNICODE_STRING       *VendorName,
+    IN  PTSDK_UNICODE_STRING       *AppName,
+    IN  PTSDK_UNICODE_STRING       *EnterpriseName,
+       IN  SESSION_AUTHENTICATION_INFO          *AuthInfo   OPTIONAL
+    );
+
+
+
+SESSION_AUTHENTICATION_INFO* 
+ISVS_CreateAuthInfo(
+       IN  _TCHAR                                              *certificateName,
+#ifdef _WIN32
+       IN  PCCERT_CONTEXT                              certificate,
+       IN      BOOL                                            krb
+#else
+       IN  _TCHAR                                              *certificatePass
+#endif
+       );
+
+VOID
+ISVS_FreeAuthInfo(
+       IN SESSION_AUTHENTICATION_INFO* authInfo
+       );
+
+
+PT_STATUS
+ISVS_GetRegisteredApplications(
+    IN    SESSION_HANDLE           SessionHandle,
+    IN    UINT32                   StartIndex,
+    OUT   UINT32                   *TotalRegisteredAppCount,
+    INOUT UINT32                   *AppHandleCount,
+    OUT   ISVS_APPLICATION_HANDLE  AppHandles[]        // [<AppHandleCount>]
+    );
+
+
+PT_STATUS
+ISVS_GetCurrentApplicationHandle (
+    IN  SESSION_HANDLE             SessionHandle,
+    OUT        ISVS_APPLICATION_HANDLE    *AppHandle
+    );
+
+
+PT_STATUS
+ISVS_GetApplicationAttributes(
+    IN    SESSION_HANDLE                    SessionHandle,
+    IN    ISVS_APPLICATION_HANDLE           ApplicationBeingRequested,
+    INOUT PTSDK_APPLICATION_ATTRIBUTES      *ApplicationAttributes
+    );
+
+
+PT_STATUS
+ISVS_UnregisterApplication(
+    IN SESSION_HANDLE       SessionHandle
+    );
+
+
+PT_STATUS
+ISVS_RemoveApplication(
+    SESSION_HANDLE          SessionHandle
+    );
+
+
+PT_STATUS
+ISVS_GetBytesAvailable(
+    IN  SESSION_HANDLE      SessionHandle,
+    OUT UINT32              *BytesAvailable
+    );
+
+
+PT_STATUS
+ISVS_AllocateBlock(
+    IN  SESSION_HANDLE          SessionHandle,
+    IN  UINT32                  BytesRequested,
+    IN  PT_BOOLEAN              BlockHidden,
+    IN  PTSDK_UNICODE_STRING    *BlockName,
+    OUT ISVS_BLOCK_HANDLE       *BlockHandle
+    );
+
+
+PT_STATUS
+ISVS_GetAllocatedBlocks(
+    IN    SESSION_HANDLE            SessionHandle,
+    IN    ISVS_APPLICATION_HANDLE   BlockOwnerApplication,
+    IN    UINT32                    StartIndex,
+    OUT   UINT32                    *TotalAllocatedBlockCount,
+    INOUT UINT32                    *BlockHandleCount,
+    OUT   ISVS_BLOCK_HANDLE         BlockHandles[]      // [<BlockHandleCount>]
+    );
+
+
+PT_STATUS
+ISVS_GetBlockAttributes(
+    IN    SESSION_HANDLE            SessionHandle,
+    IN    ISVS_BLOCK_HANDLE         BlockHandle,
+    INOUT PTSDK_BLOCK_ATTRIBUTES    *BlockAttributes
+    );
+
+
+PT_STATUS
+ISVS_DeallocateBlock(
+    IN  SESSION_HANDLE          SessionHandle,
+    IN  ISVS_BLOCK_HANDLE       BlockHandle
+    );
+
+
+PT_STATUS
+ISVS_WriteBlock(
+    IN  SESSION_HANDLE          SessionHandle,
+    IN  ISVS_BLOCK_HANDLE       BlockHandle,
+    IN  UINT32                  ByteOffset,
+    IN  UINT32                  ByteCount,
+    OUT UINT32                  *BytesWritten,
+    IN  UINT8                   Data[]
+    );
+
+
+PT_STATUS
+ISVS_ReadBlock(
+    IN    SESSION_HANDLE        SessionHandle,
+    IN    ISVS_BLOCK_HANDLE     BlockHandle,
+    IN    UINT32                ByteOffset,
+    IN    UINT32                ByteCount,
+    OUT   UINT32                *BytesRead,
+    OUT   UINT8                 Data[]
+    );
+
+
+PT_STATUS
+ISVS_LockBlock(
+    IN SESSION_HANDLE           SessionHandle,
+    IN ISVS_BLOCK_HANDLE        BlockHandle
+    );
+
+
+PT_STATUS
+ISVS_UnlockBlock(
+    IN SESSION_HANDLE           SessionHandle,
+    IN ISVS_BLOCK_HANDLE        BlockHandle
+    );
+
+
+PT_STATUS
+ISVS_SetBlockName(
+    IN SESSION_HANDLE           SessionHandle,
+    IN ISVS_BLOCK_HANDLE        BlockHandle,
+    IN PTSDK_UNICODE_STRING     *BlockName
+    );
+
+
+PT_STATUS
+ISVS_SetBlockVisibility(
+    IN SESSION_HANDLE           SessionHandle,
+    IN ISVS_BLOCK_HANDLE        BlockHandle,
+    IN PT_BOOLEAN               BlockHidden
+    );
+
+
+PT_STATUS
+ISVS_AddPermissionsGroup(
+    IN  SESSION_HANDLE          SessionHandle,
+    IN  ISVS_BLOCK_HANDLE       BlockHandle,
+    IN  ISVS_GROUP_PERMISSIONS  GroupPermissions,
+    IN  PTSDK_UNICODE_STRING    *GroupName,
+    OUT ISVS_GROUP_HANDLE       *GroupHandle
+    );
+
+
+PT_STATUS
+ISVS_GetPermissionsGroups(
+    IN    SESSION_HANDLE        SessionHandle,
+    IN    ISVS_BLOCK_HANDLE     BlockHandle,
+    IN    UINT32                StartIndex,
+    OUT   UINT32                *TotalGroupCount,
+    INOUT UINT32                *GroupHandleCount,
+    OUT   ISVS_GROUP_HANDLE     GroupHandles[]  // [<HandleCount>]
+    );
+
+
+PT_STATUS
+ISVS_GetPermissionsGroupAttributes(
+    IN    SESSION_HANDLE                        SessionHandle,
+    IN    ISVS_BLOCK_HANDLE                     BlockHandle,
+    IN    ISVS_GROUP_HANDLE                     GroupHandle,
+    INOUT PTSDK_PERMISSIONS_GROUP_ATTRIBUTES    *GroupAttributes
+    );
+
+
+PT_STATUS
+ISVS_RemovePermissionsGroup(
+    IN SESSION_HANDLE          SessionHandle,
+    IN ISVS_BLOCK_HANDLE       BlockHandle,
+    IN ISVS_GROUP_HANDLE       GroupHandle
+    );
+
+
+PT_STATUS
+ISVS_SetPermissionsGroupName(
+    IN SESSION_HANDLE           SessionHandle,
+    IN ISVS_BLOCK_HANDLE        BlockHandle,
+    IN ISVS_GROUP_HANDLE        GroupHandle,
+    IN PTSDK_UNICODE_STRING     *GroupName
+    );
+
+
+PT_STATUS
+ISVS_SetPermissionsGroupPermissions(
+    IN SESSION_HANDLE           SessionHandle,
+    IN ISVS_BLOCK_HANDLE        BlockHandle,
+    IN ISVS_GROUP_HANDLE        GroupHandle,
+    IN ISVS_GROUP_PERMISSIONS   Permissions
+    );
+
+
+PT_STATUS
+ISVS_AddPermissionsGroupMembers(
+    IN SESSION_HANDLE           SessionHandle,
+    IN ISVS_BLOCK_HANDLE        BlockHandle,
+    IN ISVS_GROUP_HANDLE        GroupHandle,
+    IN UINT32                   MemberHandleCount,
+    IN ISVS_APPLICATION_HANDLE  MemberHandles[]      // [<MemberHandleCount>]
+    );
+
+
+PT_STATUS
+ISVS_GetPermissionsGroupMembers(
+    IN    SESSION_HANDLE            SessionHandle,
+    IN    ISVS_BLOCK_HANDLE         BlockHandle,
+    IN    ISVS_GROUP_HANDLE         GroupHandle,
+    IN    UINT32                    StartIndex,
+    OUT   UINT32                    *TotalMemberCount,
+    INOUT UINT32                    *MemberHandleCount,
+    OUT   ISVS_APPLICATION_HANDLE   MemberHandles[]      // [<MemberHandleCount>]
+    );
+
+
+PT_STATUS
+ISVS_RemovePermissionsGroupMembers(
+    IN SESSION_HANDLE           SessionHandle,
+    IN ISVS_BLOCK_HANDLE        BlockHandle,
+    IN ISVS_GROUP_HANDLE        GroupHandle,
+    IN UINT32                   MemberHandleCount,
+    IN ISVS_APPLICATION_HANDLE  MemberHandles[]      // [<MemberHandleCount>]
+    );
+
+
+PT_STATUS
+ISVS_GetTimeoutValues(
+    IN  SESSION_HANDLE          SessionHandle,
+    OUT UINT32                  *RegistrationTimeout,
+    OUT UINT32                  *LockTimeout
+    );
+
+
+PT_STATUS
+ISVS_GetHostUUID(
+    OUT PT_UUID         Uuid
+    );
+
+#ifndef ENFORCE_IAMT2_USAGE
+// ISVS 1.0 support 
+PT_STATUS
+ISVS_GetAPIVersion(
+    IN  wchar_t             *Username   OPTIONAL,
+    IN  wchar_t             *Password   OPTIONAL,
+    IN  CHAR                *TargetUrl,
+    OUT ISVS_VERSION        *Version
+    );
+#endif
+
+
+PT_STATUS
+ISVS_GetAPIVersionEx(
+    OUT ISVS_VERSION    *Version,
+    IN  wchar_t             *Username   OPTIONAL,
+    IN  wchar_t             *Password   OPTIONAL,
+    IN  CHAR                *TargetUrl  ,
+       IN  SESSION_AUTHENTICATION_INFO   *AuthInfo   OPTIONAL
+    );
+
+
+PT_STATUS
+ISVS_GetBlockWriteEraseLimit(
+    IN SESSION_HANDLE       SessionHandle,
+    IN ISVS_BLOCK_HANDLE    BlockHandle,
+    OUT UINT32              *WriteEraseLimit
+    );
+
+
+
+VOID
+ISVS_GetLastNetworkError(
+    IN  SESSION_HANDLE  SessionHandle  OPTIONAL,
+    OUT VOID            *NetworkError
+    );
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _PTHI_API_
+