1 /**********************************************************************
3 ** I N T E L P R O P R I E T A R Y **
5 ** COPYRIGHT (c) 1993 - 2006 BY INTEL CORPORATION. ALL **
6 ** RIGHTS RESERVED. NO PART OF THIS PROGRAM OR PUBLICATION MAY **
7 ** BE REPRODUCED, TRANSMITTED, TRANSCRIBED, STORED IN A **
8 ** RETRIEVAL SYSTEM, OR TRANSLATED INTO ANY LANGUAGE OR COMPUTER **
9 ** LANGUAGE IN ANY FORM OR BY ANY MEANS, ELECTRONIC, MECHANICAL, **
10 ** MAGNETIC, OPTICAL, CHEMICAL, MANUAL, OR OTHERWISE, WITHOUT **
11 ** THE PRIOR WRITTEN PERMISSION OF : **
13 ** INTEL CORPORATION **
15 ** 2200 MISSION COLLEGE BOULEVARD **
17 ** SANTA CLARA, CALIFORNIA 95052-8119 **
19 **********************************************************************/
21 //+--------------------------------------------------------------------
26 // Contents: Header file for the IntelĀ® AMT storage library.
28 //---------------------------------------------------------------------
47 To enable compile time checking for Intel(r) AMT2 compatible usage use the following definition:
48 #define ENFORCE_IAMT2_USAGE
51 #define ISVS_VERSION_MAJOR 2
52 #define ISVS_VERSION_MINOR 0
59 typedef unsigned char UINT8;
60 typedef unsigned short UINT16;
61 typedef unsigned int UINT32;
67 typedef UINT8 PT_UUID[16];
69 typedef UINT32 ISVS_APPLICATION_HANDLE;
71 #define ISVS_APPLICATION_NAME_FILTER 0xFFFFFFF0
72 #define ISVS_VENDOR_NAME_FILTER 0xFFFFFFF1
73 #define ISVS_INVALID_HANDLE 0xFFFFFFFF
76 typedef UINT32 PT_BOOLEAN;
77 static const PT_BOOLEAN PTHI_FALSE = 0;
78 static const PT_BOOLEAN PTHI_TRUE = 1;
81 // ------------------------
83 // ------------------------
84 typedef struct _ISVS_VERSION
92 // ------------------------
93 // PTSDK_UNICODE_STRING
94 // ------------------------
95 // UTF16 Unicode String
96 // Length - The length in bytes of the string stored in Buffer.
97 // MaximumLength - The maximum length in bytes of Buffer.
98 // Buffer - Points to a buffer used to contain a string of wide characters.
100 // PTSDK_UNICODE_STRING types may not be null terminated
102 typedef struct _PTSDK_UNICODE_STRING
105 UINT16 MaximumLength;
108 } PTSDK_UNICODE_STRING;
116 typedef UINT32 ISVS_GROUP_HANDLE;
118 typedef UINT32 ISVS_GROUP_PERMISSIONS;
119 static const ISVS_GROUP_PERMISSIONS ISVS_GROUP_PERMISSIONS_READ_ONLY = 1;
120 static const ISVS_GROUP_PERMISSIONS ISVS_GROUP_PERMISSIONS_READ_WRITE = 2;
122 typedef struct _PTSDK_PERMISSIONS_GROUP_ATTRIBUTES
124 PTSDK_UNICODE_STRING Name;
125 ISVS_GROUP_PERMISSIONS Permissions;
127 } PTSDK_PERMISSIONS_GROUP_ATTRIBUTES;
134 typedef UINT32 ISVS_BLOCK_HANDLE;
136 typedef struct _PTSDK_BLOCK_ATTRIBUTES
139 PT_BOOLEAN BlockHidden;
140 PTSDK_UNICODE_STRING BlockName;
142 } PTSDK_BLOCK_ATTRIBUTES;
149 typedef struct _PTSDK_APPLICATION_ATTRIBUTES
151 PTSDK_UNICODE_STRING VendorName;
152 PTSDK_UNICODE_STRING ApplicationName;
154 } PTSDK_APPLICATION_ATTRIBUTES;
161 typedef UINT32 PT_STATUS;
163 static const PT_STATUS PT_STATUS_SUCCESS = 0;
164 static const PT_STATUS PT_STATUS_INTERNAL_ERROR = 0x0001;
165 static const PT_STATUS PT_STATUS_NOT_READY = 0x0002;
166 static const PT_STATUS PT_STATUS_INVALID_PT_MODE = 0x0003;
167 static const PT_STATUS PT_STATUS_INVALID_MESSAGE_LENGTH = 0x0004;
168 static const PT_STATUS PT_STATUS_TABLE_FINGERPRINT_NOT_AVAILABLE = 0x0005;
169 static const PT_STATUS PT_STATUS_INTEGRITY_CHECK_FAILED = 0x0006;
170 static const PT_STATUS PT_STATUS_UNSUPPORTED_ISVS_VERSION = 0x0007;
171 static const PT_STATUS PT_STATUS_APPLICATION_NOT_REGISTERED = 0x0008;
172 static const PT_STATUS PT_STATUS_INVALID_REGISTRATION_DATA = 0x0009;
173 static const PT_STATUS PT_STATUS_APPLICATION_DOES_NOT_EXIST = 0x000a;
174 static const PT_STATUS PT_STATUS_NOT_ENOUGH_STORAGE = 0x000b;
175 static const PT_STATUS PT_STATUS_INVALID_NAME = 0x000c;
176 static const PT_STATUS PT_STATUS_BLOCK_DOES_NOT_EXIST = 0x000d;
177 static const PT_STATUS PT_STATUS_INVALID_BYTE_OFFSET = 0x000e;
178 static const PT_STATUS PT_STATUS_INVALID_BYTE_COUNT = 0x000f;
179 static const PT_STATUS PT_STATUS_NOT_PERMITTED = 0x0010;
180 static const PT_STATUS PT_STATUS_NOT_OWNER = 0x0011;
181 static const PT_STATUS PT_STATUS_BLOCK_LOCKED_BY_OTHER = 0x0012;
182 static const PT_STATUS PT_STATUS_BLOCK_NOT_LOCKED = 0x0013;
183 static const PT_STATUS PT_STATUS_INVALID_GROUP_PERMISSIONS = 0x0014;
184 static const PT_STATUS PT_STATUS_GROUP_DOES_NOT_EXIST = 0x0015;
185 static const PT_STATUS PT_STATUS_INVALID_MEMBER_COUNT = 0x0016;
186 static const PT_STATUS PT_STATUS_MAX_LIMIT_REACHED = 0x0017;
187 static const PT_STATUS PT_STATUS_INVALID_AUTH_TYPE = 0x0018;
188 static const PT_STATUS PT_STATUS_AUTHENTICATION_FAILED = 0x0019;
189 static const PT_STATUS PT_STATUS_INVALID_DHCP_MODE = 0x001a;
190 static const PT_STATUS PT_STATUS_INVALID_IP_ADDRESS = 0x001b;
191 static const PT_STATUS PT_STATUS_INVALID_DOMAIN_NAME = 0x001c;
193 static const PT_STATUS PT_STATUS_REQUEST_UNEXPECTED = 0x001e;
194 static const PT_STATUS PT_STATUS_INVALID_TABLE_TYPE = 0x001f;
195 static const PT_STATUS PT_STATUS_INVALID_PROVISIONING_MODE = 0x0020;
196 static const PT_STATUS PT_STATUS_UNSUPPORTED_OBJECT = 0x0021;
197 static const PT_STATUS PT_STATUS_INVALID_TIME = 0x0022;
198 static const PT_STATUS PT_STATUS_INVALID_INDEX = 0x0023;
199 static const PT_STATUS PT_STATUS_INVALID_PARAMETER = 0x0024;
201 static const PT_STATUS PT_STATUS_FLASH_WRITE_LIMIT_EXCEEDED = 0x0026;
203 static const PT_STATUS PT_STATUS_NETWORK_IF_ERROR_BASE = 0x0800;
204 static const PT_STATUS PT_STATUS_SDK_DEFINED_ERROR_BASE = 0x1000;
206 static const PT_STATUS PTSDK_STATUS_INTERNAL_ERROR = 0x1000;
207 static const PT_STATUS PTSDK_STATUS_NOT_INITIALIZED = 0x1001;
208 static const PT_STATUS PTSDK_STATUS_LIB_VERSION_UNSUPPORTED = 0x1002;
209 static const PT_STATUS PTSDK_STATUS_INVALID_PARAM = 0x1003;
210 static const PT_STATUS PTSDK_STATUS_RESOURCES = 0x1004;
211 static const PT_STATUS PTSDK_STATUS_HARDWARE_ACCESS_ERROR = 0x1005;
212 static const PT_STATUS PTSDK_STATUS_REQUESTOR_NOT_REGISTERED = 0x1006;
213 static const PT_STATUS PTSDK_STATUS_NETWORK_ERROR = 0x1007;
214 static const PT_STATUS PTSDK_STATUS_PARAM_BUFFER_TOO_SHORT = 0x1008;
215 static const PT_STATUS PTSDK_STATUS_COM_NOT_INITIALIZED_IN_THREAD = 0x1009;
216 static const PT_STATUS PTSDK_STATUS_URL_REQUIRED = 0x100a;
218 // -------------------
219 // IN/OUT definitions
220 // -------------------
224 #define IN const /* input parameter (const) */
225 #define OUT /* output parameter */
226 #define INOUT /* input & output parameter */
227 #define OPTIONAL /* optional parameter */
239 typedef unsigned long ULONG;
240 typedef char * PCHAR;
241 typedef unsigned long * PULONG;
243 typedef struct _SESSION_HANDLE *SESSION_HANDLE;
244 typedef struct _SESSION_AUTHENTICATION_INFO SESSION_AUTHENTICATION_INFO;
249 INOUT UINT32 *LibMajorVersion,
250 INOUT UINT32 *LibMinorVersion,
251 OUT UINT32 *LibBuildNumber
260 ISVS_InitializeCOMinThread();
263 ISVS_UninitializeCOMinThread();
268 #ifndef ENFORCE_IAMT2_USAGE
271 ISVS_RegisterApplication(
272 OUT SESSION_HANDLE *SessionHandle,
273 IN wchar_t *Username OPTIONAL,
274 IN wchar_t *Password OPTIONAL,
276 IN PT_UUID MachineUUID OPTIONAL,
277 IN PTSDK_UNICODE_STRING *VendorName,
278 IN PTSDK_UNICODE_STRING *AppName,
279 IN PTSDK_UNICODE_STRING *EnterpriseName
285 ISVS_RegisterApplicationEx(
286 OUT SESSION_HANDLE *SessionHandle,
287 IN wchar_t *Username OPTIONAL,
288 IN wchar_t *Password OPTIONAL,
290 IN PT_UUID MachineUUID OPTIONAL,
291 IN PTSDK_UNICODE_STRING *VendorName,
292 IN PTSDK_UNICODE_STRING *AppName,
293 IN PTSDK_UNICODE_STRING *EnterpriseName,
294 IN SESSION_AUTHENTICATION_INFO *AuthInfo OPTIONAL
299 SESSION_AUTHENTICATION_INFO*
301 IN _TCHAR *certificateName,
303 IN PCCERT_CONTEXT certificate,
306 IN _TCHAR *certificatePass
312 IN SESSION_AUTHENTICATION_INFO* authInfo
317 ISVS_GetRegisteredApplications(
318 IN SESSION_HANDLE SessionHandle,
319 IN UINT32 StartIndex,
320 OUT UINT32 *TotalRegisteredAppCount,
321 INOUT UINT32 *AppHandleCount,
322 OUT ISVS_APPLICATION_HANDLE AppHandles[] // [<AppHandleCount>]
327 ISVS_GetCurrentApplicationHandle (
328 IN SESSION_HANDLE SessionHandle,
329 OUT ISVS_APPLICATION_HANDLE *AppHandle
334 ISVS_GetApplicationAttributes(
335 IN SESSION_HANDLE SessionHandle,
336 IN ISVS_APPLICATION_HANDLE ApplicationBeingRequested,
337 INOUT PTSDK_APPLICATION_ATTRIBUTES *ApplicationAttributes
342 ISVS_UnregisterApplication(
343 IN SESSION_HANDLE SessionHandle
348 ISVS_RemoveApplication(
349 SESSION_HANDLE SessionHandle
354 ISVS_GetBytesAvailable(
355 IN SESSION_HANDLE SessionHandle,
356 OUT UINT32 *BytesAvailable
362 IN SESSION_HANDLE SessionHandle,
363 IN UINT32 BytesRequested,
364 IN PT_BOOLEAN BlockHidden,
365 IN PTSDK_UNICODE_STRING *BlockName,
366 OUT ISVS_BLOCK_HANDLE *BlockHandle
371 ISVS_GetAllocatedBlocks(
372 IN SESSION_HANDLE SessionHandle,
373 IN ISVS_APPLICATION_HANDLE BlockOwnerApplication,
374 IN UINT32 StartIndex,
375 OUT UINT32 *TotalAllocatedBlockCount,
376 INOUT UINT32 *BlockHandleCount,
377 OUT ISVS_BLOCK_HANDLE BlockHandles[] // [<BlockHandleCount>]
382 ISVS_GetBlockAttributes(
383 IN SESSION_HANDLE SessionHandle,
384 IN ISVS_BLOCK_HANDLE BlockHandle,
385 INOUT PTSDK_BLOCK_ATTRIBUTES *BlockAttributes
390 ISVS_DeallocateBlock(
391 IN SESSION_HANDLE SessionHandle,
392 IN ISVS_BLOCK_HANDLE BlockHandle
398 IN SESSION_HANDLE SessionHandle,
399 IN ISVS_BLOCK_HANDLE BlockHandle,
400 IN UINT32 ByteOffset,
402 OUT UINT32 *BytesWritten,
409 IN SESSION_HANDLE SessionHandle,
410 IN ISVS_BLOCK_HANDLE BlockHandle,
411 IN UINT32 ByteOffset,
413 OUT UINT32 *BytesRead,
420 IN SESSION_HANDLE SessionHandle,
421 IN ISVS_BLOCK_HANDLE BlockHandle
427 IN SESSION_HANDLE SessionHandle,
428 IN ISVS_BLOCK_HANDLE BlockHandle
434 IN SESSION_HANDLE SessionHandle,
435 IN ISVS_BLOCK_HANDLE BlockHandle,
436 IN PTSDK_UNICODE_STRING *BlockName
441 ISVS_SetBlockVisibility(
442 IN SESSION_HANDLE SessionHandle,
443 IN ISVS_BLOCK_HANDLE BlockHandle,
444 IN PT_BOOLEAN BlockHidden
449 ISVS_AddPermissionsGroup(
450 IN SESSION_HANDLE SessionHandle,
451 IN ISVS_BLOCK_HANDLE BlockHandle,
452 IN ISVS_GROUP_PERMISSIONS GroupPermissions,
453 IN PTSDK_UNICODE_STRING *GroupName,
454 OUT ISVS_GROUP_HANDLE *GroupHandle
459 ISVS_GetPermissionsGroups(
460 IN SESSION_HANDLE SessionHandle,
461 IN ISVS_BLOCK_HANDLE BlockHandle,
462 IN UINT32 StartIndex,
463 OUT UINT32 *TotalGroupCount,
464 INOUT UINT32 *GroupHandleCount,
465 OUT ISVS_GROUP_HANDLE GroupHandles[] // [<HandleCount>]
470 ISVS_GetPermissionsGroupAttributes(
471 IN SESSION_HANDLE SessionHandle,
472 IN ISVS_BLOCK_HANDLE BlockHandle,
473 IN ISVS_GROUP_HANDLE GroupHandle,
474 INOUT PTSDK_PERMISSIONS_GROUP_ATTRIBUTES *GroupAttributes
479 ISVS_RemovePermissionsGroup(
480 IN SESSION_HANDLE SessionHandle,
481 IN ISVS_BLOCK_HANDLE BlockHandle,
482 IN ISVS_GROUP_HANDLE GroupHandle
487 ISVS_SetPermissionsGroupName(
488 IN SESSION_HANDLE SessionHandle,
489 IN ISVS_BLOCK_HANDLE BlockHandle,
490 IN ISVS_GROUP_HANDLE GroupHandle,
491 IN PTSDK_UNICODE_STRING *GroupName
496 ISVS_SetPermissionsGroupPermissions(
497 IN SESSION_HANDLE SessionHandle,
498 IN ISVS_BLOCK_HANDLE BlockHandle,
499 IN ISVS_GROUP_HANDLE GroupHandle,
500 IN ISVS_GROUP_PERMISSIONS Permissions
505 ISVS_AddPermissionsGroupMembers(
506 IN SESSION_HANDLE SessionHandle,
507 IN ISVS_BLOCK_HANDLE BlockHandle,
508 IN ISVS_GROUP_HANDLE GroupHandle,
509 IN UINT32 MemberHandleCount,
510 IN ISVS_APPLICATION_HANDLE MemberHandles[] // [<MemberHandleCount>]
515 ISVS_GetPermissionsGroupMembers(
516 IN SESSION_HANDLE SessionHandle,
517 IN ISVS_BLOCK_HANDLE BlockHandle,
518 IN ISVS_GROUP_HANDLE GroupHandle,
519 IN UINT32 StartIndex,
520 OUT UINT32 *TotalMemberCount,
521 INOUT UINT32 *MemberHandleCount,
522 OUT ISVS_APPLICATION_HANDLE MemberHandles[] // [<MemberHandleCount>]
527 ISVS_RemovePermissionsGroupMembers(
528 IN SESSION_HANDLE SessionHandle,
529 IN ISVS_BLOCK_HANDLE BlockHandle,
530 IN ISVS_GROUP_HANDLE GroupHandle,
531 IN UINT32 MemberHandleCount,
532 IN ISVS_APPLICATION_HANDLE MemberHandles[] // [<MemberHandleCount>]
537 ISVS_GetTimeoutValues(
538 IN SESSION_HANDLE SessionHandle,
539 OUT UINT32 *RegistrationTimeout,
540 OUT UINT32 *LockTimeout
549 #ifndef ENFORCE_IAMT2_USAGE
553 IN wchar_t *Username OPTIONAL,
554 IN wchar_t *Password OPTIONAL,
556 OUT ISVS_VERSION *Version
562 ISVS_GetAPIVersionEx(
563 OUT ISVS_VERSION *Version,
564 IN wchar_t *Username OPTIONAL,
565 IN wchar_t *Password OPTIONAL,
567 IN SESSION_AUTHENTICATION_INFO *AuthInfo OPTIONAL
572 ISVS_GetBlockWriteEraseLimit(
573 IN SESSION_HANDLE SessionHandle,
574 IN ISVS_BLOCK_HANDLE BlockHandle,
575 OUT UINT32 *WriteEraseLimit
581 ISVS_GetLastNetworkError(
582 IN SESSION_HANDLE SessionHandle OPTIONAL,
583 OUT VOID *NetworkError