/* ** -- HEADER PROLOG -- ***********************************************
Ultimedia System Facilities  COPYRIGHT (C) IBM Corporation 1993, 1994
           LICENSED MATERIAL-PROGRAM PROPERTY OF IBM
                                                    *** Keyword *** '%n'
  'fzzmoapi.h'
 
  DESCRIPTION:
  ------------
  Defines, typedefs, and prototypes for Obj Mgmt Byte Stream APIs.
 
 ** -- HEADER PROLOG END -- ******************************************* */
 
/* All USF/400 structures are aligned on 1 byte boundaries.  This pragma */
/*   specifies this alignment. */
#pragma pack(1)
 
/* System-wide defines */
#define FZZM_MAX_PATH         259       /* Max file path length 256 + 'D:\'  */
#define FZZM_MAX_OPT_PATH     298       /* Max length of a 3995 optical path */
 
 
/*  ------------------- Component Defines ------------------- */
#define FZZM_FALSE              0
#define FZZM_TRUE               1
 
/* File system source/targets */
#define FZZM_OBJID              1
#define FZZM_PCPATH             2
#define FZZM_REPO               3
#define FZZM_OPT                4       // 5
#define FZZM_STAGE              5       // 4
 
/* --- AS/400 Obj Mgmt Defines --- */
/* The following defines are used by Obj Mgmt on the AS/400 as well.  Any changes */
/*   here must be reflected there as well. */
 
/* Misc USF/400 field lengths */
#define FZZM_LEN_USER_ID                10
#define FZZM_LEN_USER_AUTHORITY         10
#define FZZM_LEN_AUTHORIZATION_LIST     10
#define FZZM_LEN_REMOTE_DEVICE_NAME     8
#define FZZM_LEN_SADC_DEVICE_NAME       20
#define FZZM_LEN_DEVICE_OFFSET_MEMBER   12
#define FZZM_LEN_CALENDAR_NAME          26
#define FZZM_LEN_DEVICE_DESC            50
#define FZZM_LEN_MAX_SEARCH_VALUE       60
#define FZZM_LEN_MAX_QRY_DEFS           20
 
/* USF/400 attribute lengths */
#define FZZM_ATTRLEN_OBJNAME            50
#define FZZM_ATTRLEN_OBJDESC            50
#define FZZM_ATTRLEN_KEYWORD            50
#define FZZM_ATTRLEN_OBJTYPE            8
#define FZZM_ATTRLEN_OBJID              20
#define FZZM_ATTRLEN_LANGUAGE           3
#define FZZM_ATTRLEN_TEMPLATE           1
#define FZZM_ATTRLEN_KEY_OBJ_MBR        20
#define FZZM_ATTRLEN_RMV_MEDIA_TITLE    54
#define FZZM_ATTRLEN_ESC                50
#define FZZM_ATTRLEN_REPO_FILE_PATH     79      /* 76 on host: PC adds "d:\" */
#define FZZM_ATTRLEN_PC_FILE_PATH       259
#define FZZM_ATTRLEN_OPTICAL_FILE_PATH  298
#define FZZM_ATTRLEN_CRT_DATE_TIME      12      /* YYYYMMDDHHMM */
#define FZZM_ATTRLEN_CHG_DATE_TIME      16      /* YYYYMMDDHHMMSSHS */
#define FZZM_ATTRLEN_OWNER              10
 
/* USF/400 Object Type Definitions */
#define FZZM_OBJTYP_SEQUENCEOBJ         "UMS     "
#define FZZM_OBJTYP_DIGITALOBJ          "UMD     "
#define FZZM_OBJTYP_VIDEOOBJ            "UMDV    "
#define FZZM_OBJTYP_AUDIOOBJ            "UMDA    "
#define FZZM_OBJTYP_IMAGEOBJ            "UMDI    "
#define FZZM_OBJTYP_TEXTOBJ             "UMDT    "
#define FZZM_OBJTYP_GRAPHICSOBJ         "UMDG    "
#define FZZM_OBJTYP_SCRIPTOBJ           "UMDS    "
#define FZZM_OBJTYP_KEYOBJ              "UK      "
#define FZZM_OBJTYP_DEVICEOBJ           "UD      "
#define FZZM_OBJTYP_CONTAINEROBJ        "UGC     "
#define FZZM_OBJTYP_SHADOWOBJ           "US      "
 
/* Attribute ID definitions used for setting & retrieving attributes */
#define FZZM_ATTR_OBJTYPE               1
#define FZZM_ATTR_KEYWORD               2
#define FZZM_ATTR_LANGUAGE              3
#define FZZM_ATTR_TEMPLATE              4
#define FZZM_ATTR_KEY_OBJ_MBR           5
#define FZZM_ATTR_SHADOWED_OBJ          6
#define FZZM_ATTR_PC_FILE_PATH          7
#define FZZM_ATTR_OPTICAL_FILE_PATH     8
#define FZZM_ATTR_RMV_MEDIA_TITLE       9
#define FZZM_ATTR_ESC                   10
#define FZZM_ATTR_OBJDESC               11
#define FZZM_ATTR_BASE_CONTAINER        12
#define FZZM_ATTR_CRT_DATE_TIME         13
#define FZZM_ATTR_CHG_DATE_TIME         14
#define FZZM_ATTR_OBJNAME               15
#define FZZM_ATTR_PARENT_CONTAINER      16
#define FZZM_ATTR_GENERAL               17
#define FZZM_ATTR_REPO_FILE_PATH        18
#define FZZM_ATTR_DEVICE_NAME           19
#define FZZM_ATTR_DEVICE_OFFSET         20
#define FZZM_ATTR_OBJID                 21
#define FZZM_ATTR_SEQ_OBJ_MEMBER        22
 
/* Attribute manipulation/action definitions */
#define FZZM_ACTION_SET_ATTR            0
#define FZZM_ACTION_ADD_ATTR            1
#define FZZM_ACTION_CHG_ATTR            2
#define FZZM_ACTION_RMV_ATTR            3
 
/* Query types used when querying objects by attribute. */
#define FZZM_QRY_CONTAINER               0
#define FZZM_QRY_OBJNAME                 1
#define FZZM_QRY_KEYWORD                 2
#define FZZM_QRY_RMV_MEDIA_TITLE         3
#define FZZM_QRY_SHADOW_OBJS             4
#define FZZM_QRY_KEY_OBJ_MBRS            5
#define FZZM_QRY_SEQ_OBJ_MBRS            6
#define FZZM_QRY_DEVICES                 7
 
/* Relational operators supported by fzzmQryObjects API. */
#define FZZM_RELOP_EQUAL                0
#define FZZM_RELOP_NOT_EQUAL            1
#define FZZM_RELOP_GREATER              2
#define FZZM_RELOP_GREATER_OR_EQUAL     3
#define FZZM_RELOP_LESS                 4
#define FZZM_RELOP_LESS_OR_EQUAL        5
#define FZZM_RELOP_NOT_GREATER          6
#define FZZM_RELOP_NOT_LESS             7
#define FZZM_RELOP_CONTAINS             8
#define FZZM_RELOP_BEGINS               9
 
/* Logical operators supported by fzzmQryObjects API. */
#define FZZM_LOGOP_AND                  0
#define FZZM_LOGOP_OR                   1
#define FZZM_LOGOP_END                  2
 
/* Format of data provided to QryObjects API */
#define FZZM_INFMT_QRYDEF              1
 
/* Format of data requested by fzzmQryObjectsByAttribute and */
/*   fzzmQryObjects API */
#define FZZM_RTNFMT_OBJID              1
#define FZZM_RTNFMT_GENERAL            2
 
/* Format of data returned by QryDevices API */
#define FZZM_RTNFMT_DEVICEDATA         1
 
/* Format of data returned by QryConnectors API */
#define FZZM_RTNFMT_CONNECTDATA        1
 
/* Format of data returned by ResolveFilename API */
#define FZZM_RTNFMT_FILEENTRY          1
#define FZZM_RTNFMT_FILEENTRYOPT       2
 
/* Format of data returned by ResolveKeyObject API */
#define FZZM_RTNFMT_MEMBERENTRY        1
 
/* Format of data returned by RtvObjectAuthority API */
#define FZZM_RTNFMT_AUTHORITY            1
 
/* Authority defines */
#define FZZM_AUT_ALL                     1       /* '*ALL'     */
#define FZZM_AUT_CHANGE                  2       /* '*CHANGE'  */
#define FZZM_AUT_USE                     3       /* '*USE'     */
#define FZZM_AUT_EXCLUDE                 4       /* '*EXCLUDE' */
#define FZZM_AUT_USERDEF                 5       /* 'USER DEF' */
#define FZZM_AUT_AUTL                    6       /* '*AUTL'    */
 
/* Authority bit levels */
#define FZZM_AUTBITS_ALL                 0x0000007F
#define FZZM_AUTBITS_CHANGE              0x00000079
#define FZZM_AUTBITS_USE                 0x00000009
#define FZZM_AUTBITS_EXCLUDE             0x00000000
 
/* Set Object Authority Actions */
#define FZZM_ACTION_ADD_AUT              1
#define FZZM_ACTION_CHG_AUT              2
#define FZZM_ACTION_RMV_AUT              3
 
/* Delete Object dependency bits */
#define FZZM_DLTBITS_SHADOW_OBJECTS      0x00000001
#define FZZM_DLTBITS_KEY_OBJECTS         0x00000002
#define FZZM_DLTBITS_SEQUENCE_OBJECTS    0x00000004
 
/* USF/400 Template Value Definitions */
#define FZZM_TEMPLATE_YES               "1"
#define FZZM_TEMPLATE_NO                "0"
 
/* USF/400 Object Language Definitions */
#define FZZM_OBJLANG_ANY                "ANY"  /* Special value */
#define FZZM_OBJLANG_ARABIC             "785"
#define FZZM_OBJLANG_ASIAN              "099"
#define FZZM_OBJLANG_AUSTRALIA          "061"
#define FZZM_OBJLANG_BELGIUM            "032"
#define FZZM_OBJLANG_BRAZIL             "055"
#define FZZM_OBJLANG_CANADA             "002"
#define FZZM_OBJLANG_CHINA              "088"
#define FZZM_OBJLANG_CZECHOSLOVAKIA     "042"
#define FZZM_OBJLANG_DENMARK            "045"
#define FZZM_OBJLANG_FINLAND            "358"
#define FZZM_OBJLANG_FRANCE             "033"
#define FZZM_OBJLANG_GERMANY            "049"
#define FZZM_OBJLANG_HEBREW             "972"
#define FZZM_OBJLANG_HUNGARY            "036"
#define FZZM_OBJLANG_ICELAND            "354"
#define FZZM_OBJLANG_ITALY              "039"
#define FZZM_OBJLANG_JAPAN              "081"
#define FZZM_OBJLANG_KOREA              "082"
#define FZZM_OBJLANG_LATIN_AMERICA      "003"
#define FZZM_OBJLANG_NETHERLANDS        "031"
#define FZZM_OBJLANG_NORWAY             "047"
#define FZZM_OBJLANG_POLAND             "048"
#define FZZM_OBJLANG_PORTUGAL           "351"
#define FZZM_OBJLANG_SPAIN              "034"
#define FZZM_OBJLANG_SWEDEN             "046"
#define FZZM_OBJLANG_SWITZERLAND        "041"
#define FZZM_OBJLANG_TURKEY             "090"
#define FZZM_OBJLANG_UNITED_KINGDOM     "044"
#define FZZM_OBJLANG_UNITED_STATES      "001"
#define FZZM_OBJLANG_YUGOSLAVIA         "038"
 
/* USF/400 Device Offset Time Format Definitions */
#define FZZM_TIMEFMT_NO_FORMAT          '0'  /* SADC supports directly */
#define FZZM_TIMEFMT_MMTIME             '1'  /* SADC supports directly */
#define FZZM_TIMEFMT_HH_MM_SS           '2'  /* SADC supports directly */
#define FZZM_TIMEFMT_HH_MM_SS_FRAMES    '3'  /* SADC supports directly */
#define FZZM_TIMEFMT_MILLISECONDS       '4'
#define FZZM_TIMEFMT_FRAMES             '5'
 
 
/*  ------------------- typdefs ----------------------------- */
 
/* Input structs for the ResolveFilename API */
typedef struct {
  USHORT  usSize;               /* Size of this struct - fixed at 12 */
  PSZ     pszByteStreamName;    /* NULL or name of byte stream file  */
  PSZ     pszRepoName;          /* NULL or full name of file in Repo */
  USHORT  usReserved;           /* Must be zero                      */
} FZZMFILEINFO, FAR *PFZZMFILEINFO;
 
typedef struct {
  USHORT  usSize;               /* Size of this struct - fixed at 14 */
  PSZ     pszByteStreamName;    /* NULL or name of byte stream file  */
  PSZ     pszRepoName;          /* NULL or full name of file in Repo */
  PSZ     pszOptName;           /* NULL or full optical path         */
} FZZMFILEINFOOPT, FAR *PFZZMFILEINFOOPT;
 
/* Output struct for the ResolveFilename API */
typedef struct {
  CHAR    szFile[FZZM_MAX_OPT_PATH + 1]; /* Full name of one of the files found */
  USHORT  usType;             /* Type of file stored in pszFile. Valid types:   */
                              /*   FZZM_PCPATH, FZZM_REPO, FZZM_STAGE, FZZM_OPT */
} FZZMFILEENTRY, FAR *PFZZMFILEENTRY;
 
/* Input struct for the ResolveKeyObject API */
typedef struct {
  USHORT   usSize;              /* Size of this struct */
  PSZ      pszESC;              /* User's ESC list     */
} FZZMSELCRITERIA, FAR *PFZZMSELCRITERIA;
 
/* Output struct for the ResolveKeyObject API */
typedef struct {
  CHAR     szObjectID[FZZM_ATTRLEN_OBJID + 1];  /* Member's Object ID */
  ULONG    ulPriority;          /* Priority of this member */
} FZZMMEMBERENTRY, FAR *PFZZMMEMBERENTRY;
 
 
/* Structure definition used for retrieving an object's general attributes */
typedef struct _FZZMGENERALATTRS {
   CHAR szObjectID[FZZM_ATTRLEN_OBJID + 1];
   CHAR szName[FZZM_ATTRLEN_OBJNAME + 1];
   CHAR szDescription[FZZM_ATTRLEN_OBJDESC + 1];
   CHAR szType[FZZM_ATTRLEN_OBJTYPE + 1];
   CHAR szTemplateFlag[FZZM_ATTRLEN_TEMPLATE + 1];
   CHAR szCreateDateTimeStamp[FZZM_ATTRLEN_CRT_DATE_TIME + 1];
   CHAR szChangeDateTimeStamp[FZZM_ATTRLEN_CHG_DATE_TIME + 1];
   CHAR szOpticalPath[FZZM_ATTRLEN_OPTICAL_FILE_PATH + 1];
   CHAR szPCPath[FZZM_ATTRLEN_PC_FILE_PATH + 1];
   CHAR szRepositoryPath[FZZM_ATTRLEN_REPO_FILE_PATH + 1];
   CHAR szRemovableMediaTitle[FZZM_ATTRLEN_RMV_MEDIA_TITLE + 1];
   ULONG ulUserAuthorityBits;
   CHAR szShadowObjectID[FZZM_ATTRLEN_OBJID + 1];
   ULONG ulShadowUserAuthorityBits;
} FZZMGENERALATTRS, FAR *PFZZMGENERALATTRS;
#define FZZM_ATTRLEN_GENERAL       sizeof(FZZMGENERALATTRS)
 
/* Structure definition used for setting & rtving the device name attribute.     */
/*   The first two fields are fixed length (space padded) fields.  The last      */
/*   can be from 1 to FZZM_LEN_SADC_DEVICE_NAME + 1 characters long and must     */
/*   be null terminated.  This struct can be passed into Set/RtvObjectAttribute  */
/*   instead of a character buffer.  Note that FZZM_ATTRLEN_DEVICE_NAME does     */
/*   not include the terminating null (to be consistent with the other lengths). */
typedef struct _FZZMDEVICENAME {
   CHAR achNetworkID[FZZM_LEN_NETWORK_ID];
   CHAR achRemoteDeviceName[FZZM_LEN_REMOTE_DEVICE_NAME];
   CHAR szSADCDeviceName[FZZM_LEN_SADC_DEVICE_NAME + 1];
} FZZMDEVICENAME, FAR *PFZZMDEVICENAME;
#define FZZM_ATTRLEN_DEVICE_NAME        (sizeof(FZZMDEVICENAME) - 1)
 
/* Structure definition used for setting & rtving the device offset attribute.   */
/*   All fields are fixed length (space padded).  The last member should be      */
/*   set to '\0' to provide the terminating null needed by SetObjectAttribute.   */
/*   RtvObjectAttribute will set this automatically if this struct is passed in. */
/*   Note that FZZM_ATTRLEN_DEVICE_OFFSET does not include the size of the last  */
/*   field (the terminating null) to be consistent with the other lengths.       */
typedef struct _FZZMDEVICEOFFSET {
   CHAR chOffsetTimeFormat;
   CHAR achBeginOffset[FZZM_LEN_DEVICE_OFFSET_MEMBER];
   CHAR achEndOffset[FZZM_LEN_DEVICE_OFFSET_MEMBER];
   CHAR szTerminatingNull[1];
} FZZMDEVICEOFFSET, FAR *PFZZMDEVICEOFFSET;
#define FZZM_ATTRLEN_DEVICE_OFFSET      (sizeof(FZZMDEVICEOFFSET) - 1)
 
/* Output structure for the QryDevice API.  pszDeviceName can be cast to a */
/*   FZZMDEVICENAME struct to work with its individual parts.              */
typedef struct _FZZMDEVICEDATA {
  CHAR szDeviceName[FZZM_ATTRLEN_DEVICE_NAME + 1];
  LONG lDeviceType;             /* 1=videotape, 2=videodisc, ... */
  CHAR chDeviceCtrl;            /* one of 'Y' or 'N'             */
  CHAR szCalendar[FZZM_LEN_CALENDAR_NAME + 1];
  CHAR szDevDesc[FZZM_LEN_DEVICE_DESC + 1];
} FZZMDEVICEDATA, FAR *PFZZMDEVICEDATA;
 
/* Output structure for the QryConnectors API.  pszDeviceName can be cast  */
/*   to a FZZMDEVICCENAME struct to work with its individual parts.        */
typedef struct _FZZMCONNECTDATA {
  CHAR szDeviceName[FZZM_ATTRLEN_DEVICE_NAME + 1];
  LONG lPortID;
  CHAR chPortType;            /* '1' = Input, '2' = Output      */
  CHAR chDefaultConnector;    /* '0' = No, '1' = Yes            */
} FZZMCONNECTDATA, FAR *PFZZMCONNECTDATA;
 
/* Output header structure for the RtvObjectAuthority API. */
typedef struct _FZZMAUTUSERHEADER {
  ULONG ulBytesAvail;
  ULONG ulNumReturned;
  CHAR  szAuthorizationList[FZZM_LEN_AUTHORIZATION_LIST + 1];
  CHAR  szOwner[FZZM_ATTRLEN_OWNER + 1];
} FZZMAUTUSERHEADER, FAR *PFZZMAUTUSERHEADER;
 
/* Output array structure for the RtvObjectAuthority API. */
typedef struct _FZZMAUTUSER {
  CHAR   szUser[FZZM_LEN_USER_ID + 1];
  USHORT usAuthority;
} FZZMAUTUSER, FAR *PFZZMAUTUSER;
 
/* Header input structure for fzzmQryObjects */
typedef struct _FZZMQRYDEFHEADER {
  CHAR   szContainerID[FZZM_ATTRLEN_OBJID + 1];
  USHORT usQryChildContainers;
} FZZMQRYDEFHEADER, FAR *PFZZMQRYDEFHEADER;
 
/* Input structure that follows the header structure for fzzmQryObjects */
typedef struct _FZZMQRYDEF {
  USHORT usAttrID;
  USHORT usRelOp;
  CHAR   szSearchVal[FZZM_LEN_MAX_SEARCH_VALUE + 1];
  USHORT usLogicOp;
} FZZMQRYDEF, FAR *PFZZMQRYDEF;
 
typedef struct _USFBITMAPINFOHEADER {
  ULONG  cbFix;
  USHORT cx;
  USHORT cy;
  USHORT cPlanes;
  USHORT cBitCount;
} USFBITMAPINFOHEADER, FAR *PUSFBITMAPINFOHEADER;
 
typedef struct _USFBITMAPINFOHEADER2 {
  ULONG  cbFix;
  ULONG  cx;
  ULONG  cy;
  USHORT cPlanes;
  USHORT cBitCount;
  ULONG  ulCompression;
  ULONG  cbImage;
  ULONG  cxResolution;
  ULONG  cyResolution;
  ULONG  cclrUsed;
  ULONG  cclrImportant;
  USHORT usUnits;
  USHORT usReserved;
  USHORT usRecording;
  USHORT usRendering;
  ULONG  cSize1;
  ULONG  cSize2;
  ULONG  ulColorEncoding;
  ULONG  ulIdentifier;
} USFBITMAPINFOHEADER2, FAR *PUSFBITMAPINFOHEADER2;
 
 
/*  -------------- API PROTOTYPES --------------------------- */
USHORT USFENTRY fzzmResolveFilename(
                    FZZMCONV       convUSFConvID,
                    PSZ            pszObjectID,
                    PVOID          pFileInfo,
                    USHORT         usFormat,
                    ULONG          ulBytesProvided,
                    PULONG         pulBytesAvail,
                    PULONG         pulNumReturned,
                    PVOID          pFileList);
 
USHORT USFENTRY fzzmCopyObjectData(
                    FZZMCONV       convUSFConvID,
                    USHORT         usSource,
                    PSZ            pszSource,
                    USHORT         usTarget,
                    PSZ            pszTarget,
                    USHORT         usForceCopy);
 
USHORT USFENTRY fzzmMoveObjectData(
                    FZZMCONV       convUSFConvID,
                    USHORT         usSource,
                    PSZ            pszSource,
                    USHORT         usTarget,
                    PSZ            pszTarget);
 
USHORT USFENTRY fzzmDeleteObjectData(
                    FZZMCONV       convUSFConvID,
                    USHORT         usItem,
                    PSZ            pszItem);
 
USHORT USFENTRY fzzmCreateObject(
                    FZZMCONV     convUSFConvID,
                    PSZ          pszObjectType,
                    PSZ          pszObjectName,
                    PSZ          pszTargetContainer,
                    PSZ          pszNewObjectID);
 
USHORT USFENTRY fzzmRtvObjectAttribute(
                    FZZMCONV     convUSFConvID,
                    PSZ          pszObjectID,
                    USHORT       usAttributeID,
                    ULONG        ulBytesProvided,
                    PULONG       pulBytesAvail,
                    PULONG       pulNumReturned,
                    PVOID        pAttributeBuffer);
 
USHORT USFENTRY fzzmSetObjectAttribute(
                    FZZMCONV     convUSFConvID,
                    PSZ          pszObjectID,
                    USHORT       usAttributeID,
                    USHORT       usAction,
                    PSZ          pszValue1,
                    PSZ          pszValue2);
 
USHORT USFENTRY fzzmQryObjectsByAttribute(
                    FZZMCONV     convUSFConvID,
                    USHORT       usQryType,
                    PSZ          pszSearchValue,
                    USHORT       usPartialMatches,
                    USHORT       usFormat,
                    ULONG        ulBytesProvided,
                    PULONG       pulBytesAvail,
                    PULONG       pulNumReturned,
                    PVOID        pQryResults);
 
USHORT USFENTRY fzzmDeleteObject(
                    FZZMCONV     convUSFConvID,
                    PSZ          pszObjectID,
                    USHORT       usForceDelete,
                    PULONG       pulDependencyBits);
 
USHORT USFENTRY fzzmRtvObjectOwner(
                    FZZMCONV     convUSFConvID,
                    PSZ          pszObjectID,
                    PSZ          pszCurrentOwner);
 
USHORT USFENTRY fzzmSetObjectOwner(
                    FZZMCONV     convUSFConvID,
                    PSZ          pszObjectID,
                    PSZ          pszNewOwner,
                    USHORT       usKeepOwnerAut);
 
USHORT USFENTRY fzzmRtvUserAuthorityToObject(
                    FZZMCONV     convUSFConvID,
                    PSZ          pszObjectID,
                    PSZ          pszUserID,
                    PUSHORT      pusAuthority,
                    PULONG       pulAuthorityBits);
 
USHORT USFENTRY fzzmSetObjectThumbnail(
                    FZZMCONV     convUSFConvID,
                    PSZ          pszObjectID,
                    USHORT       usAction,
                    ULONG        ulThumbnailLength,
                    PVOID        pThumbnailData);
 
USHORT USFENTRY fzzmRtvObjectThumbnail(
                    FZZMCONV     convUSFConvID,
                    PSZ          pszObjectID,
                    ULONG        ulBytesProvided,
                    PULONG       pulBytesAvail,
                    PVOID        pThumbnailData);
 
USHORT USFENTRY fzzmCopyObject(
                    FZZMCONV     convUSFConvID,
                    PSZ          pszSourceObjectID,
                    PSZ          pszTargetContainer,
                    PSZ          pszTargetObjectName,
                    USHORT       usCopyByteStream,
                    PSZ          pszNewObjectID);
 
USHORT USFENTRY fzzmMoveObject(
                    FZZMCONV     convUSFConvID,
                    PSZ          pszSourceObjectID,
                    PSZ          pszTargetContainer,
                    PSZ          pszTargetObjectName);
 
USHORT USFENTRY fzzmResolveKeyObject(
                    FZZMCONV         convUSFConvID,
                    PSZ              pszKeyObjectID,
                    PFZZMSELCRITERIA pSelCriteria,
                    USHORT           usFormat,
                    ULONG            ulBytesProvided,
                    PULONG           pulBytesAvail,
                    PULONG           pulNumReturned,
                    PVOID            pMemberList);
 
USHORT USFENTRY fzzmQryDevices(
                    FZZMCONV     convUSFConvID,
                    PSZ          pszDeviceName,
                    USHORT       usFormat,
                    ULONG        ulBytesProvided,
                    PULONG       pulBytesAvail,
                    PULONG       pulNumReturned,
                    PVOID        pQryResults);
 
USHORT USFENTRY fzzmQryConnectors(
                    FZZMCONV     convUSFConvID,
                    PSZ          pszDeviceName,
                    USHORT       usFormat,
                    ULONG        ulBytesProvided,
                    PULONG       pulBytesAvail,
                    PULONG       pulNumReturned,
                    PVOID        pQryResults);
 
USHORT USFENTRY fzzmSetObjectAuthority(
                    FZZMCONV     convUSFConvID,
                    PSZ          pszObjectID,
                    PSZ          pszUser,
                    USHORT       usAction,
                    USHORT       usAuthority,
                    PSZ          pszAuthorizationList,
                    ULONG        ulReserved);
 
USHORT USFENTRY fzzmRtvObjectAuthority(
                    FZZMCONV     convUSFConvID,
                    PSZ          pszObjectID,
                    USHORT       usFormat,
                    ULONG        ulBytesProvided,
                    PVOID        pResults);
 
USHORT USFENTRY fzzmQryObjects(
                    FZZMCONV     convUSFConvID,
                    USHORT       usInFormat,
                    ULONG        ulInBytesProvided,
                    PVOID        pQryInput,
                    USHORT       usRtnFormat,
                    ULONG        ulRtnBytesProvided,
                    PULONG       pulBytesAvail,
                    PULONG       pulNumReturned,
                    PVOID        pResults);
 
 
/* Return the structure alignment to the default setting */
#pragma pack()
 
