palm-os-sdk/sdk-5r4/include/Core/System/DLCommon.h
2018-08-30 15:18:26 +01:00

3779 lines
113 KiB
C
Executable File

/******************************************************************************
*
* Copyright (c) 1995-2004 PalmSource, Inc. All rights reserved.
*
* File: DLCommon.h
*
* Release: eclipse 5 SDK (68K) R4.
*
* Description:
* Desktop Link Protocol(DLP) function id's, parameters, and frame
* structures.
*
*****************************************************************************/
#ifndef __DLCOMMON_H__
#define __DLCOMMON_H__
#include <PalmTypes.h>
#include "VFSMgr.h"
/************************************************************
* DesktopLink function codes
*************************************************************/
// DlpFuncID -- function id's used in request blocks sent to
// the DesktopLink application on Pilot. The width of the function
// id base is 7 bits. The high order bit(the 8th bit) is used to
// distinguish requests from their responses -- it is cleared in request
// blocks and is set in response blocks (i.e., the response to a particular
// command will have the same function code base as the command and the
// high order bit set). See dlpFuncRespFlag defined below.
//
typedef enum DlpFuncID {
dlpReservedFunc = 0x0F, // range reserved for internal use
// DLP 1.0 FUNCTIONS START HERE (PalmOS v1.0)
dlpReadUserInfo,
dlpWriteUserInfo,
dlpReadSysInfo,
dlpGetSysDateTime,
dlpSetSysDateTime,
dlpReadStorageInfo,
dlpReadDBList,
dlpOpenDB,
dlpCreateDB,
dlpCloseDB,
dlpDeleteDB,
dlpReadAppBlock,
dlpWriteAppBlock,
dlpReadSortBlock,
dlpWriteSortBlock,
dlpReadNextModifiedRec,
dlpReadRecord,
dlpWriteRecord,
dlpDeleteRecord,
dlpReadResource,
dlpWriteResource,
dlpDeleteResource,
dlpCleanUpDatabase,
dlpResetSyncFlags,
dlpCallApplication,
dlpResetSystem,
dlpAddSyncLogEntry,
dlpReadOpenDBInfo,
dlpMoveCategory,
dlpProcessRPC, // remote procedure calls interface
dlpOpenConduit, // this command is sent before each conduit is opened
dlpEndOfSync, // ends the sync session
dlpResetRecordIndex, // resets "modified record" index
dlpReadRecordIDList, // LAST 1.0 FUNCTION
// DLP 1.1 FUNCTIONS ADDED HERE (PalmOS v2.0 Personal, and Professional)
dlpReadNextRecInCategory, // iterate through all records in category
dlpReadNextModifiedRecInCategory, // iterate through modified records in category
dlpReadAppPreference, // read application preference
dlpWriteAppPreference, // write application preference
dlpReadNetSyncInfo, // read Network HotSync settings
dlpWriteNetSyncInfo, // write Network HotSync settings
dlpReadFeature, // read a feature from Feature Manager
// DLP 1.2 FUNCTIONS ADDED HERE (PalmOS v3.0)
dlpFindDB, // find a database given creator and type, or name, or
// get info on currently-open db
dlpSetDBInfo, // change database information (name, attributes, version,
// creation, modification, backup dates, type and creator
// DLP 1.3 FUNCTIONS ADDED HERE (PalmOS v4.0)
dlpLoopBackTest, // Perform a loopback test with the DLServer. The desktop
// will send data down to the device and the device will
// immediately echo it back.
dlpExpSlotEnumerate, // Get the number of slots on the device from the expansion manager
dlpExpCardPresent, // Query the expansion manager to see if the card is present.
dlpExpCardInfo,
dlpVFSCustomControl, // Make a custom control call to the VFS manager
dlpVFSGetDefaultDirectory, // Get the defualt directory from the VFS manager
// ADH Does this one really need to be part of the sync API?
dlpVFSImportDatabaseFromFile, // Import a database into the storage heap from a file
dlpVFSExportDatabaseToFile, /// Export a database from the storage heap to a file.
dlpVFSFileCreate, // Create a file using the VFS manager
dlpVFSFileOpen, // Open a file using the VFS manager
dlpVFSFileClose, // Close a file using the VFS manager
dlpVFSFileWrite, // Write a file using the VFS manager
dlpVFSFileRead, // Read from a file using the VFS manager
dlpVFSFileDelete, // Delete a file using the VFS manager
dlpVFSFileRename, // Rename a file using the VFS manager
dlpVFSFileEOF, // VFS End of File?
dlpVFSFileTell, // ???
// dlpVFSFileTruncate,
dlpVFSFileGetAttributes,
dlpVFSFileSetAttributes,
dlpVFSFileGetDates,
dlpVFSFileSetDates,
// dlpVFSFileGetSize,
dlpVFSDirCreate,
dlpVFSDirEntryEnumerate,
dlpVFSGetFile, // HotSync only
dlpVFSPutFile, // HotSync only
dlpVFSVolumeFormat,
dlpVFSVolumeEnumerate,
dlpVFSVolumeInfo,
dlpVFSVolumeGetLabel,
dlpVFSVolumeSetLabel,
dlpVFSVolumeSize,
dlpVFSFileSeek,
dlpVFSFileResize,
dlpVFSFileSize,
dlpExpSlotMediaType,
dlpWriteResourceStream,
dlpWriteRecordStream,
dlpReadResourceStream,
dlpReadRecordStream,
dlpLastFunc // ***ALWAYS KEEP LAST***
} DlpFuncID;
#define dlpLastPilotV10FuncID dlpReadRecordIDList
// Desktop Link function error codes returned in the response errorCode
// field.
typedef enum DlpRespErrorCode {
dlpRespErrNone = 0, // reserve 0 for no error
dlpRespErrSystem, // general Pilot system error
dlpRespErrIllegalReq, // unknown function ID
dlpRespErrMemory, // insufficient dynamic heap memory
dlpRespErrParam, // invalid parameter
dlpRespErrNotFound, // database, record, file, or resource not found
// VFS File Not Found Error
dlpRespErrNoneOpen, // there are no open databases
dlpRespErrDatabaseOpen, // database is open by someone else
dlpRespErrTooManyOpenDatabases, // there are too many open databases
dlpRespErrAlreadyExists, // DB or File already exists
// VFS File Already Exists
dlpRespErrCantOpen, // couldn't open DB
dlpRespErrRecordDeleted, // record is deleted
dlpRespErrRecordBusy, // record is in use by someone else
dlpRespErrNotSupported, // the requested operation is not supported
// on the given database type(record or resource)
dlpRespErrUnused1, // was dlpRespErrROMBased
dlpRespErrReadOnly, // caller does not have write access(or DB is in ROM)
dlpRespErrNotEnoughSpace, // not enough space in data store for record/resource/etc.
dlpRespErrLimitExceeded, // size limit exceeded
dlpRespErrCancelSync, // cancel the sync
dlpRespErrBadWrapper, // bad arg wrapper(for debugging)
dlpRespErrArgMissing, // required arg not found(for debugging)
dlpRespErrArgSize, // invalid argument size
dlpRespErrLastReserved = 127, // End of DLP Error codes
dlpRespErrExpansionRange = expErrorClass, // Expansion Manager range
dlpRespErrVFSRange = vfsErrorClass // VFS Manager range
} DlpRespErrorCode;
// Database flags
// NOTE: THESE *MUST* MATCH THE TOUCHDOWN DB ATTRIBUTES(AT LEAST IN THE FIRST VERSION).
// ANY CHANGES MUST BE REFLECTED IN "READ DB LIST" AND
#define dlpDBFlagResDB 0x0001 // resource DB if set; record DB if cleared
#define dlpDBFlagReadOnly 0x0002 // DB is read only if set; read/write if cleared
#define dlpDBFlagAppInfoDirty 0x0004 // Set if Application Info block is dirty
// Optionally supported by an App's conduit
#define dlpDBFlagBackup 0x0008 // Set if database should be backed up to PC if
// no app-specific synchronization conduit has
// been supplied.
#define dlpDBFlagOKToInstallNewer 0x0010 // This tells the backup conduit that it's OK
// for it to install a newer version of this database
// with a different name if the current database is
// open. This mechanism is used to update the
// Graffiti Shortcuts database, for example.
#define dlpDBFlagResetAfterInstall 0x0020 // Device requires a reset after this database is
// installed.
#define dlpDBFlagCopyPrevention 0x0040 // This database should not be copied to
// another deviced.
#define dlpDBFlagOpen 0x8000 // DB is open
// Database record attributes
#define dlpRecAttrDeleted 0x80 // delete this record next sync
#define dlpRecAttrDirty 0x40 // archive this record next sync
#define dlpRecAttrBusy 0x20 // record currently in use
#define dlpRecAttrSecret 0x10 // "secret" record - password protected
#define dlpRecAttrArchived 0x08 // archived record
// Date/time will be described in the following format
// yr(2 bytes), mo(1 byte, 1-12), dy(1 byte, 1-31),
// hr(1 byte, 0-23), min(1 byte, 0-59), sec(1 byte, 0-59),
// unused(1 byte).
typedef struct DlpDateTimeType { // OFFSET
UInt16 year; // 0; year (high, low)
UInt8 month; // 2; month: 1-12
UInt8 day; // 3; day: 1-31
UInt8 hour; // 4; hour: 0-23
UInt8 minute; // 5; minute: 0-59
UInt8 second; // 6; second: 0-59
UInt8 unused; // 7; unused -- set to null!
} DlpDateTimeType; // TOTAL: 8 bytes
// Version structure
typedef struct DlpVersionType {
// OFFSET
UInt16 wMajor; // 0; major version number (0 = ignore)
UInt16 wMinor; // 2; minor version number
// TOTAL: 4 bytes
} DlpVersionType;
/************************************************************
* Request and Response headers.
*
* Each DLP request and response data block begins with the
* corresponding header structure which identifies the function
* id, argument count, and error code(responses only).
*************************************************************/
// Request header:
//
typedef struct DlpReqHeaderType {
// OFFSET
UInt8 id; // 0; request function ID
UInt8 argc; // 2; count of args that follow this header
// TOTAL: 2 bytes
} DlpReqHeaderType;
typedef DlpReqHeaderType* DlpReqHeaderPtr;
typedef struct DlpReqType {
// OFFSET
DlpReqHeaderType header; // 0; request header
// FIXED SIZE: 2 bytes
UInt8 args[2]; // 2; request arguments -- var size
} DlpReqType;
typedef DlpReqType* DlpReqPtr;
// Response header:
//
typedef struct DlpRespHeaderType {
// OFFSET
UInt8 id; // 0; response function ID
UInt8 argc; // 1; count of arguments that follow this header
UInt16 errorCode; // 2; error code
// TOTAL: 4 bytes
} DlpRespHeaderType;
typedef DlpRespHeaderType* DlpRespHeaderPtr;
typedef struct DlpRespType {
// OFFSET
DlpRespHeaderType header; // 0; response header
// FIXED SIZE: 4 bytes
UInt8 args[2]; // 4; response arguments -- var size
} DlpRespType;
typedef DlpRespType* DlpRespPtr;
// Generic request/response body type(for utility routines)
//
typedef union DlpGenericBodyType {
UInt8 id; // request/response id
DlpReqType req; // request body
DlpRespType resp; // response body
} DlpGenericBodyType;
typedef DlpGenericBodyType* DlpGenericBodyPtr;
// dlpFuncRespFlag is used to form a function response ID from a
// function ID by or'ing it with the function ID. For example: if
// dlpFuncDeleteResource is the request ID, the correct response ID
// must be (dlpFuncDeleteResource | dlpFuncRespFlag).
//
#define dlpFuncRespFlag 0x80
// dlpFuncIDMask is used to mask out the function ID value
#define dlpFuncIDMask 0x7f
// dlpFirstArgID is the value of the first argument ID to be defined for
// functions. Values below it are reserved.
//
#define dlpFirstArgID 0x20
/************************************************************
*
* Argument headers used to "wrap" request and response arguments
*
* IMPORTANT: ARGUMENT WRAPPERS IN REQUESTS AND RESPONSES MUST
* ALWAYS START ON AN EVEN-BYTE BOUNDARY. The server
* implementation expects this to be the case.
*
*************************************************************/
// dlpSmallArgFlag is used to identify "small" argument wrappers by
// or'ing it with the argument id in argument header.
//
// ADH Change
//#define dlpSmallArgFlag 0x080
#define dlpSmallArgFlag 0x80
// dlpShortArgIDMask is used to mask out the argument id value
//
#define dlpShortArgIDMask 0x7F
// dlpLongArgFlag is used to identify "long" argument wrappers by
// or'ing it with the argument id in argument header.
//
// ADH Change
//#define dlpLongArgFlag 0xC000
#define dlpLongArgFlag 0x40
// dlpLongArgIDMask is used to mask out the argument id value
//
// ADH Change
//#define dlpLongArgIDMask 0x3FFF
#define dlpLongArgIDMask 0xBF
//-------------------------------------------------------------------------
// Int16 argument wrappers (v1.0-compatible)
//-------------------------------------------------------------------------
// Maximum Int16 argument size which can be "wrapped"
#define dlpMaxTinyArgSize 0x000000FFL
#define dlpMaxSmallArgSize 0x0000FFFFL
#define dlpMaxShortArgSize dlpMaxSmallArgSize
// Tiny argument header for data sizes up to 255 bytes(optimization)
//
typedef struct DlpTinyArgWrapperType {
// OFFSET
UInt8 bID; // 0; argument ID
UInt8 bSize; // 1; argument size (does NOT include this arg header)
// TOTAL: 2 bytes
} DlpTinyArgWrapperType;
typedef struct DlpTinyArgType {
DlpTinyArgWrapperType wrapper; // 0; argument header
UInt8 data[2]; // 2; argument data -- var size
} DlpTinyArgType;
// Small argument header for data sizes above 255 bytes(*may also be used for
// smaller arguments when convenient*)
//
typedef struct DlpSmallArgWrapperType {
// OFFSET
UInt8 bID; // 0; argument ID
UInt8 unused; // 1; unused(for alignment) -- set to null!
UInt16 wSize; // 2; argument size (does NOT include this arg header)
// TOTAL: 4 bytes
} DlpSmallArgWrapperType;
typedef struct DlpSmallArgType {
DlpSmallArgWrapperType wrapper; // 0; argument header
UInt8 data[2]; // 4; argument data -- var size
} DlpSmallArgType;
// Unions of Int16 argument types
typedef union DlpShortArgWrapperType {
UInt8 bID; // arg id
DlpTinyArgWrapperType tiny; // "tiny" arg wrapper
DlpSmallArgWrapperType small; // "tiny" arg wrapper
} DlpShortArgWrapperType;
typedef DlpShortArgWrapperType* DlpShortArgWrapperPtr;
typedef union DlpShortArgType {
UInt8 bID; // arg id
DlpTinyArgType tiny; // "tiny" arg
DlpSmallArgType small; // "small" arg
} DlpShortArgType;
typedef DlpShortArgType* DlpShortArgPtr;
//-------------------------------------------------------------------------
// Int32 argument wrapper (v2.0 extension)
//-------------------------------------------------------------------------
// NOTE: Pilot v2.0 will implement the capability to parse long arguments
// but will not originate them. This will assure backwards compatibility with
// the 1.0 desktop as well as compatibility with the future version of the
// desktop software which may originate the "long" argument wrappers.
//
// Int32 argument wrappers are identified by the dlpLongArgFlag bits set
// in the argument id field.
// Maximum long argument size which can be "wrapped"
#define dlpMaxLongArgSize 0xFFFFFFFFL
typedef struct DlpLongArgWrapperType {
// OFFSET
UInt8 bID; // 0; argument ID
UInt8 unused; // 1: unused set to null
UInt32 dwSize; // 2; argument size (does NOT include this arg header)
// TOTAL: 6 bytes
} DlpLongArgWrapperType;
typedef DlpLongArgWrapperType* DlpLongArgWrapperPtr;
typedef struct DlpLongArgType {
// OFFSET
DlpLongArgWrapperType wrapper; // 0; argument header
UInt8 data[2]; // 6; argument data -- var size
} DlpLongArgType;
typedef DlpLongArgType* DlpLongArgPtr;
//-------------------------------------------------------------------------
// Unions of all argument and wrapper types
//-------------------------------------------------------------------------
// Union of all argument wrapper types
typedef union DlpGenericArgWrapperType {
DlpShortArgWrapperType shortWrap; // "Int16" arg wrapper(tiny and small)
DlpLongArgWrapperType longWrap; // "long" arg wrapper
} DlpGenericArgWrapperType;
typedef DlpGenericArgWrapperType* DlpGenericArgWrapperPtr;
// Union of all argument types
typedef union DlpGenericArgType {
DlpShortArgType shortArg; // "Int16" arg(tiny and small)
DlpLongArgType longArg; // "long" arg
} DlpGenericArgType;
typedef DlpGenericArgType* DlpGenericArgPtr;
/********************************************************************
* Desktop Link Protocol Parameters
********************************************************************/
// dlpCmdTimeoutSec -- this is the number of seconds to wait for a command
// to begin coming in before timing out
//
#define dlpCmdTimeoutSec 30
/************************************************************
* DLP function argument structures
*************************************************************/
#pragma mark *** DLP Command Arguments ****
//////////////////////////////////////////////////////////////////////////
// dlpReadUserInfo
//////////////////////////////////////////////////////////////////////////
// Request arguments: none
//
// Response arguments:
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrMemory
// Request argument structure:
//
// none.
// Response argument structure:
//
#define dlpReadUserInfoRespArgID dlpFirstArgID
typedef struct DlpReadUserInfoRespHdrType {
// OFFSET
UInt32 userID; // 0; user ID number (0 if none)
UInt32 viewerID; // 4; id assigned to viewer by the desktop
UInt32 lastSyncPC; // 8; last sync PC id (0 if none)
DlpDateTimeType succSyncDate; // 12; last successful sync (year = 0 if none)
DlpDateTimeType lastSyncDate; // 20; last sync date(year = 0 if none)
UInt8 userNameLen; // 28; length of user name field,
// including null (0 = no user name)
UInt8 passwordLen; // 29; length of encrypted password
// (0 = no password set)
// TOTAL: 30 bytes
} DlpReadUserInfoRespHdrType;
typedef struct DlpReadUserInfoRespType {
// OFFSET
DlpReadUserInfoRespHdrType //
header; // 0; fixed-size header
// FIXED SIZE: 30 bytes
UInt8 nameAndPassword[2]; // 30; user name -- var size
// User name begins at the nameAndPassword field and is null-terminated.
// The encrypted password follows the user name and is NOT null-terminated.
// The encrypted password may contain any byte values(0-255).
} DlpReadUserInfoRespType;
//////////////////////////////////////////////////////////////////////////
// dlpWriteUserInfo
//////////////////////////////////////////////////////////////////////////
// Request arguments:
// user id (4 bytes)
// last sync PC id(4 bytes)
// user name
//
// Response arguments: none
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrNotEnoughSpace,
// dlpRespErrParam
// Request argument structure:
//
#define dlpWriteUserInfoReqArgID dlpFirstArgID
#define dlpMaxUserNameSize 41 // max user name size, including null byte
typedef struct DlpWriteUserInfoReqHdrType {
// OFFSET
UInt32 userID; // 0; user ID number
UInt32 viewerID; // 4; id assigned to viewer by the desktop
UInt32 lastSyncPC; // 8; last sync PC id
DlpDateTimeType lastSyncDate; // 12; last sync date(year = 0 if none)
UInt8 modFlags; // 20; flags indicating which values are being
// modified; see the dlpUserInfoMod...
// flags defined below
UInt8 userNameLen; // 21; user name length, including null
// TOTAL: 22 bytes
} DlpWriteUserInfoReqHdrType;
// Flags indicating which values are being changed by the dlpWriteUserInfo
// request. These flags are used in the modFlags field of DlpWriteUserInfoReqHdrType.
// These flags are additive.
//
#define dlpUserInfoModUserID 0x80 // changing the user id
#define dlpUserInfoModSyncPC 0x40 // changing the last sync PC id
#define dlpUserInfoModSyncDate 0x20 // changing sync date
#define dlpUserInfoModName 0x10 // changing user name
#define dlpUserInfoModViewerID 0x08 // changing the viewer id
typedef struct DlpWriteUserInfoReqType {
// OFFSET
DlpWriteUserInfoReqHdrType
header; // 0; fixed-size header
// FIXED SIZE: 22 bytes
UInt8 userName[2]; // 22; user name -- var size
// User name begins at the userName field and is null-terminated.
} DlpWriteUserInfoReqType;
// Response argument structure:
//
// none.
//////////////////////////////////////////////////////////////////////////
// dlpReadSysInfo
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrSystem
//
// Request argument structure:
//
// none. DLP v1.0 and v1.1
enum {
// NEW FOR DLP v1.2:
dlpReadSysInfoReqArgID = dlpFirstArgID
};
// dlpReadSysInfoReqArgID request arg structure
//
typedef struct DlpReadSysInfoReqType {
// OFFSET
DlpVersionType dlpVer; // 0; DLP version of the caller
// TOTAL: 4 bytes
} DlpReadSysInfoReqType;
// Response argument structure:
//
// Both response arguments are returned in one reply
enum {
dlpReadSysInfoRespArgID = dlpFirstArgID,
// NEW FOR DLP v1.2:
dlpReadSysInfoVerRespArgID
};
// dlpReadSysInfoRespArgID response arg structure:
//
typedef struct DlpReadSysInfoRespType {
// OFFSET
UInt32 romSWVersion; // 0; ROM-based sys software version
UInt32 localizationID;// 4; localization ID
UInt8 unused; // 8; unused(for alignment) -- set to null!
UInt8 prodIDSize; // 9; size of productID/model field
UInt32 prodID; // 10; product id (was variable size)
// TOTAL: 14 bytes
} DlpReadSysInfoRespType;
// dlpReadSysInfoVerRespArgID response arg structure:
//
typedef struct DlpReadSysInfoVerRespType {
// OFFSET
DlpVersionType dlpVer; // 0; DLP version of the device
DlpVersionType compVer; // 4; product compatibility version of the device
UInt32 dwMaxRecSize; // 8; maximum record/resource size that may be allocated on
// the device given that sufficient free memory exists
// (0xFFFFFFFF = up to available memory)
// TOTAL: 12 bytes
} DlpReadSysInfoVerRespType;
//////////////////////////////////////////////////////////////////////////
// dlpGetSysDateTime
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes: none
// Request argument structure:
//
// none.
// Response argument structure:
//
#define dlpGetSysDateTimeRespArgID dlpFirstArgID
typedef struct DlpGetSysDateTimeRespType {
// OFFSET
DlpDateTimeType dateTime; // 0; system date/time
// TOTAL: 8 bytes
} DlpGetSysDateTimeRespType;
//////////////////////////////////////////////////////////////////////////
// dlpSetSysDateTime
//////////////////////////////////////////////////////////////////////////
// Request arguments:
// new system date/time
//
// Response arguments: none
//
// Possible error codes
// dlpRespErrParam
// Request argument structure:
//
#define dlpSetSysDateTimeReqArgID dlpFirstArgID
typedef struct DlpSetSysDateTimeReqType {
// OFFSET
DlpDateTimeType dateTime; // 0; new system date/time
// TOTAL: 8 bytes
} DlpSetSysDateTimeReqType;
typedef DlpSetSysDateTimeReqType* DlpSetSysDateTimeReqPtr;
// Response argument structure:
//
// none.
//////////////////////////////////////////////////////////////////////////
// dlpReadStorageInfo
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrMemory,
// dlpRespErrNotFound
// Request argument structure:
//
enum {
dlpReadStorageInfoReqArgID = dlpFirstArgID
};
typedef struct DlpReadStorInfoReqType {
// OFFSET
UInt8 startCardNo; // 0; card number to start at
// (0 = first)
UInt8 unused; // 1; unused -- set to null!
// TOTAL: 2 bytes
} DlpReadStorInfoReqType;
// Response argument structure:
//
enum {
dlpReadStorageInfoRespArgID = dlpFirstArgID,
dlpReadStorageInfoExRespArgID // v1.1 extension
};
//
// dlpReadStorageInfoRespArgID:
//
// Card info structure of variable size
typedef struct DlpCardInfoHdrType {
// OFFSET
UInt8 totalSize; // 0; total size of this card info
// *ROUNDED UP TO EVEN SIZE*
UInt8 cardNo; // 1; card number
UInt16 cardVersion; // 2; card version
DlpDateTimeType crDate; // 4; creation date/time
UInt32 romSize; // 12; ROM size
UInt32 ramSize; // 16; RAM size
UInt32 freeRam; // 20; total free data store RAM - Fixed in DLP v1.2 to exclude
// dynamic heap RAM
UInt8 cardNameSize; // 24; size of card name string
UInt8 manufNameSize; // 25; size of manuf. name string
// TOTAL: 26 bytes;
} DlpCardInfoHdrType;
typedef struct DlpCardInfoType {
// OFFSET
DlpCardInfoHdrType //
header; // 0; fixed-size header
// FIXED SIZE: 26 bytes;
UInt8 cardNameAndManuf[2];
// 26; card name and manuf. text -- var size
// Card name is the cardNameSize bytes of text at cardNameAndManuf,
// followed immediately by manufNameSize bytes of manufacturer name.
} DlpCardInfoType;
typedef struct DlpReadStorInfoRespHdrType {
// OFFSET
UInt8 lastCardNo; // 0; card number of last card retrieved
UInt8 more; // 1; non-zero if there are more cards
UInt8 unused; // 2; unused -- set to null!
UInt8 actCount; // 3; actual count of structures returned
// TOTAL: 4 bytes
} DlpReadStorInfoRespHdrType;
typedef struct DlpReadStorInfoRespType {
// OFFSET
DlpReadStorInfoRespHdrType //
header; // 0; fixed-size header
// FIXED SIZE: 4 bytes
DlpCardInfoType cardInfo[1]; // 4; actCount of card info structures -- var size
} DlpReadStorInfoRespType;
//
// EXTENDED ARGUMENTS(DL v1.1): dlpReadStorageInfoExRespArgID
//
typedef struct DlpReadStorInfoExRespType {
// OFFSET
UInt16 romDBCount; // 0; ROM database count
UInt16 ramDBCount; // 2; RAM database count
UInt32 dwReserved1; // 4; RESERVED -- SET TO NULL!
UInt32 dwReserved2; // 8; RESERVED -- SET TO NULL!
UInt32 dwReserved3; // 12; RESERVED -- SET TO NULL!
UInt32 dwReserved4; // 16; RESERVED -- SET TO NULL!
// TOTAL: 20 bytes
} DlpReadStorInfoExRespType;
//////////////////////////////////////////////////////////////////////////
// dlpReadDBList
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrMemory,
// dlpRespErrNotFound
// Request argument structure:
//
#define dlpReadDBListReqArgID dlpFirstArgID
typedef struct DlpReadDBListReqType {
// OFFSET
UInt8 srchFlags; // 0; search flags
UInt8 cardNo; // 1; card number -- 0-based
UInt16 startIndex; // 2; DB index to start at
// (0 = from beginning)
// TOTAL: 4 bytes
} DlpReadDBListReqType;
#define dlpReadDBListFlagRAM 0x80 // Search for RAM-based
#define dlpReadDBListFlagROM 0x40 // Search for ROM-based
#define dlpReadDBListFlagMultiple 0x20 // OK to return multiple entries (DEFINED FOR DLP v1.2)
// Response argument structure:
//
#define dlpReadDBListRespArgID dlpFirstArgID
// Database info structure of variable size
typedef struct DlpDBInfoHdrType {
// OFFSET
UInt8 totalSize; // 0; total size of the DB info (DlpDBInfoHdrType + name)
// *ROUNDED UP TO EVEN SIZE*
UInt8 miscFlags; // 1; dlpDbInfoMiscFlag... flags(v1.1) -- set all unused bits to null!
UInt16 dbFlags; // 2; DB flags: dlpDBFlagReadOnly,
// dlpDBFlagResDB, dlpDBFlagAppInfoDirty, dlpDBFlagOpen,
// dlpDBFlagBackup, etc;
UInt32 type; // 4; database type
UInt32 creator; // 8; database creator
UInt16 version; // 12; database version
UInt32 modNum; // 14; modification number
DlpDateTimeType crDate; // 18; creation date
DlpDateTimeType modDate; // 26; latest modification date
DlpDateTimeType backupDate; // 34; latest backup date
UInt16 dbIndex; // 42; DB index (or dlpDbInfoUnknownDbIndex for dlpFindDB)
// TOTAL: 44 bytes;
} DlpDBInfoHdrType;
// Flags for the miscFlags field of DlpDBInfoHdrType
#define dlpDbInfoMiscFlagExcludeFromSync 0x80 // DEFINED FOR DLP v1.1
#define dlpDbInfoMiscFlagRamBased 0x40 // DEFINED FOR DLP v1.2
// Unknown index value for the dbIndex field of DlpDBInfoHdrType
#define dlpDbInfoUnknownDbIndex 0xFFFF
typedef struct DlpDBInfoType {
// OFFSET
DlpDBInfoHdrType header; // 0; fixed-size header
// FIXED SIZE: 44 bytes;
UInt8 name[2]; // 44; databse name text -- var size and
// null-terminated
} DlpDBInfoType;
typedef struct DlpReadDBListRespHdrType {
// OFFSET
UInt16 lastIndex; // 0; DB index of last entry retrieved
UInt8 flags; // 2; flags: dlpReadDBListRespFlagMore
UInt8 actCount; // 3; actual count of structures returned
// TOTAL: 4 bytes
} DlpReadDBListRespHdrType;
// dlpReadDBListRespFlagMore flag: if set, indicates that there are more
// databases to list -- this enables the server to send the listing
// incrementally, reducing server memory requirements if necessary
#define dlpReadDBListRespFlagMore 0x80
typedef struct DlpReadDBListRespType {
// OFFSET
DlpReadDBListRespHdrType //
header; // 0; fixed-size header
// FIXED SIZE: 4 bytes
DlpDBInfoType dbInfo[1]; // 4; actCount of DB info structures -- var size
} DlpReadDBListRespType;
//////////////////////////////////////////////////////////////////////////
// dlpOpenDB
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrMemory,
// dlpRespErrParam,
// dlpRespErrNotFound
// dlpRespErrTooManyOpenDatabases
// dlpRespErrCantOpen
// Request argument structure:
//
#define dlpOpenDBReqArgID dlpFirstArgID
typedef struct DlpOpenDBReqHdrType {
// OFFSET
UInt8 cardNo; // 0; memory module number
UInt8 mode; // 1; open mode
// TOTAL: 2 bytes;
} DlpOpenDBReqHdrType;
#define dlpOpenDBModeRead 0x80
#define dlpOpenDBModeWrite 0x40
#define dlpOpenDBModeExclusive 0x20
#define dlpOpenDBModeShowSecret 0x10
typedef struct DlpOpenDBReqType {
// OFFSET
DlpOpenDBReqHdrType //
header; // 0; fixed-size header
// FIXED SIZE: 2 bytes;
UInt8 name[2]; // 2; databse name text -- var size
// zero-terminated
} DlpOpenDBReqType;
typedef DlpOpenDBReqType* DlpOpenDBReqPtr;
// Response argument structure:
//
#define dlpOpenDBRespArgID dlpFirstArgID
//
// The response argument is the 1-byte database ID to be passed in
// subsequent read/write requests.
//////////////////////////////////////////////////////////////////////////
// dlpCreateDB
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrMemory,
// dlpRespErrParam,
// dlpRespErrAlreadyExists,
// dlpRespErrCantOpen,
// dlpRespErrNotEnoughSpace,
// dlpRespErrTooManyOpenDatabases
// Request argument structure:
//
#define dlpCreateDBReqArgID dlpFirstArgID
typedef struct DlpCreateDBReqHdrType {
// OFFSET
UInt32 creator; // 0; DB creator
UInt32 type; // 4; DB type
UInt8 cardNo; // 8; memory module number
UInt8 unused; // 9; unused -- set to null
UInt16 dbFlags; // 10; allowed flags: dlpDBFlagResDB,
// dlpDBFlagBackup, dlpDBFlagOKToInstallNewer,
// dlpDBFlagResetAfterInstall
UInt16 version; // 12; DB version #
// TOTAL: 14 bytes;
} DlpCreateDBReqHdrType;
typedef struct DlpCreateDBReqType {
// OFFSET
DlpCreateDBReqHdrType //
header; // 0; fixed-size header
// FIXED SIZE: 12 bytes;
UInt8 name[2]; // 14; DB name text -- var size
// zero-terminated
} DlpCreateDBReqType;
typedef DlpCreateDBReqType* DlpCreateDBReqPtr;
// Response argument structure:
//
#define dlpCreateDBRespArgID dlpFirstArgID
// The response argument is the 1-byte database ID to be passed in
// subsequent read/write requests.
//////////////////////////////////////////////////////////////////////////
// dlpCloseDB
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrParam,
// dlpRespErrSystem,
// dlpRespErrMemory,
// dlpRespErrNoneOpen
// Request argument structure:
//
typedef enum {
dlpCloseDBReqArgID = dlpFirstArgID, // close a specific database
dlpCloseDBAllReqArgID, // close all databases
dlpCloseDBExReqArgID // close a specific db and update backup
// and/or modification dates (PalmOS v3.0)
} DlpCloseDBReqArgID;
// Argument structure to close a specific database(dlpCloseDBDBIDReqArgID):
//
// The request argument is the 1-byte database ID returned in open/create
// DB responses.
typedef UInt8 DlpCloseDBReqType;
// Argument structure to close all databases(dlpCloseDBReqAllArgID):
//
// This request argument contains no data
// Request type for dlpCloseDBExReqArgID (PalmOS v3.0):
typedef struct DlpCloseDBExReqType {
// OFFSET
UInt8 dbID; // 0; database id to close
UInt8 bOptFlags; // 1; bitfield of dlpCloseDBExOptFlag... flags
// TOTAL: 2 bytes
} DlpCloseDBExReqType;
// Option flags
#define dlpCloseDBExOptFlagUpdateBackupDate 0x80 // Update the backup date after closing
#define dlpCloseDBExOptFlagUpdateModDate 0x40 // Update the modification date after closing
#define dlpCloseDBExOptAllFlags (dlpCloseDBExOptFlagUpdateBackupDate | dlpCloseDBExOptFlagUpdateModDate)
// Response argument structure:
//
// none.
//////////////////////////////////////////////////////////////////////////
// dlpDeleteDB
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrParam,
// dlpRespErrNotFound,
// dlpRespErrCantOpen,
// dlpRespErrDatabaseOpen
// Request argument structure:
//
#define dlpDeleteDBReqArgID dlpFirstArgID
typedef struct DlpDeleteDBReqHdrType {
// OFFSET
UInt8 cardNo; // 0; memory module number
UInt8 unused; // 1; unused -- set to null!
// TOTAL: 2 bytes;
} DlpDeleteDBReqHdrType;
typedef struct DlpDeleteDBReqType {
// OFFSET
DlpDeleteDBReqHdrType //
header; // 0; fixed-size header
// FIXED SIZE: 2 bytes;
UInt8 name[2]; // 2; databse name text -- var size
// zero-terminated
} DlpDeleteDBReqType;
typedef DlpDeleteDBReqType* DlpDeleteDBReqPtr;
// Response argument structure:
//
// none.
//////////////////////////////////////////////////////////////////////////
// dlpReadOpenDBInfo
//////////////////////////////////////////////////////////////////////////
// Get information on an open database
//
// Possible error codes
// dlpRespErrNoneOpen
// dlpRespErrParam
// Request argument structure:
//
#define dlpReadOpenDBInfoArgID dlpFirstArgID
// The request argument is the 1-byte database ID returned in open/create
// DB responses.
// Response argument structure:
//
#define dlpReadOpenDBInfoRespArgID dlpFirstArgID
typedef struct DlpReadOpenDBInfoRespType {
// OFFSET
UInt16 numRec; // 0; number of records or resources
// TOTAL: 2 bytes
} DlpReadOpenDBInfoRespType;
//////////////////////////////////////////////////////////////////////////
// dlpMoveCategory
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrNoneOpen
// dlpRespErrParam
// dlpRespErrNotSupported
// dlpRespErrReadOnly
// Request argument structure:
//
#define dlpMoveCategoryReqArgID dlpFirstArgID
typedef struct DlpMoveCategoryReqType {
// OFFSET
UInt8 dbID; // 0; database id
UInt8 fromCategory; // 1; id of the "from" category
UInt8 toCategory; // 2; id of the "to" category
UInt8 unused; // 3; unused -- set to null!
// TOTAL: 4 bytes;
} DlpMoveCategoryReqType;
// Response argument structure:
//
// none.
//////////////////////////////////////////////////////////////////////////
// dlpReadAppBlock
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrMemory,
// dlpRespErrNotFound
// dlpRespErrNoneOpen
// dlpRespErrParam
// Request argument structure:
//
#define dlpReadBlockReqArgID dlpFirstArgID
typedef struct DlpReadBlockReqType {
// OFFSET
UInt8 dbID; // 0; database id
UInt8 unused; // 1; unused -- set to null!
UInt16 offset; // 2; offset into the block
UInt16 numBytes; // 4; number of bytes to read starting
// at offset(-1 = to the end)
// TOTAL: 6 bytes;
} DlpReadBlockReqType;
// Response argument structure:
//
#define dlpReadBlockRespArgID dlpFirstArgID
typedef struct DlpReadBlockRespHdrType {
// OFFSET
UInt16 blockSize; // 0; actual block size -- may be greater
// than the amount of data returned
// TOTAL: 2 bytes
} DlpReadBlockRespHdrType;
typedef struct DlpReadBlockRespType {
// OFFSET
DlpReadBlockRespHdrType //
header; // 0; fixed size header
// FIXED SIZE: 2 bytes
UInt8 data[2]; // 2; block data -- var size
} DlpReadBlockRespType;
//////////////////////////////////////////////////////////////////////////
// dlpWriteAppBlock
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrParam,
// dlpRespErrReadOnly
// dlpRespErrNotEnoughSpace
// dlpRespErrNoneOpen
// Request argument structure:
//
#define dlpWriteBlockReqArgID dlpFirstArgID
typedef struct DlpWriteBlockReqHdrType {
// OFFSET
UInt8 dbID; // 0; database id
UInt8 unused; // 1; unused -- set to null!
UInt16 blockSize; // 2; total block size(0 = free existing block)
// TOTAL: 4 bytes;
} DlpWriteBlockReqHdrType;
typedef struct DlpWriteBlockReqType {
// OFFSET
DlpWriteBlockReqHdrType //
header; // 0; fixed-size header
// FIXED SIZE: 4 bytes;
UInt8 data[2]; // 4; block data -- var size
} DlpWriteBlockReqType;
// Response argument structure:
//
// none.
//////////////////////////////////////////////////////////////////////////
// dlpReadSortBlock
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrMemory
// dlpRespErrNotFound
// dlpRespErrNoneOpen
// Request argument structure:
//
// see dlpReadAppBlock
// Response argument structure:
//
// see dlpReadAppBlock
//////////////////////////////////////////////////////////////////////////
// dlpWriteSortBlock
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrMemory,
// dlpRespErrParam,
// dlpRespErrNoneOpen
// Request argument structure:
//
// see dlpWriteAppBlock
// Response argument structure:
//
// none.
//////////////////////////////////////////////////////////////////////////
// dlpReadNextModifiedRec
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// see dlpReadRecord
//
// Request argument structure:
//
#define dlpReadNextModRecReqArgID dlpFirstArgID
// The request argument is the 1-byte database ID returned in open/create
// DB responses.
// Response argument structure:
//
// Response argument id = dlpReadRecordRespArgID
// Response argument structure = DlpReadRecordRespType
//////////////////////////////////////////////////////////////////////////
// dlpResetRecordIndex
//////////////////////////////////////////////////////////////////////////
// Resets the "next modified record" index to the beginning
//
// Possible error codes
// dlpRespErrParam
// dlpRespErrNoneOpen
// Request argument structure:
//
#define dlpResetRecordIndexReqArgID dlpFirstArgID
// The request argument is the 1-byte database ID returned in open/create
// DB responses.
// Response argument structure:
//
// none.
//////////////////////////////////////////////////////////////////////////
// dlpReadRecord
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrNotSupported,
// dlpRespErrSystem,
// dlpRespErrMemory,
// dlpRespErrParam,
// dlpRespErrNotFound,
// dlpRespErrRecordBusy,
// dlpRespErrNoneOpen
typedef enum {
dlpReadRecordIdArgID = dlpFirstArgID,
dlpReadRecordIndexArgID
} DlpReadRecordReqArgID;
// dlpReadRecordIdArgID request argument structure:
//
typedef struct DlpReadRecordByIDReqType {
// OFFSET
UInt8 dbID; // 0; database id
UInt8 unused; // 1; unused -- set to null!
UInt32 recordID; // 2; unique record id
UInt16 offset; // 6; offset into the record
UInt16 numBytes; // 8; number of bytes to read starting
// at the offset(-1 = "to the end")
// TOTAL: 10 bytes;
} DlpReadRecordByIDReqType;
// dlpReadRecordIndexArgID request argument structure:
//
typedef struct DlpReadRecordByIndexReqType {
// OFFSET
UInt8 dbID; // 0; database id
UInt8 unused; // 1; unused -- set to null!
UInt16 index; // 2; record index
UInt16 offset; // 4; offset into the record
UInt16 numBytes; // 6; number of bytes to read starting
// at the offset(-1 = "to the end")
// TOTAL: 8 bytes;
} DlpReadRecordByIndexReqType;
// Response argument structure:
//
#define dlpReadRecordRespArgID dlpFirstArgID
typedef struct DlpReadRecordRespHdrType {
// OFFSET
UInt32 recordID; // 0; unique record id
UInt16 index; // 4; record index
UInt16 recSize; // 6; total record size in bytes
UInt8 attributes; // 8; record attributes
UInt8 category; // 9; record category index
// TOTAL: 10 bytes;
} DlpReadRecordRespHdrType;
typedef struct DlpReadRecordRespType {
// OFFSET
DlpReadRecordRespHdrType //
header; // 0; fixed-size header
// FIXED SIZE: 8 bytes;
UInt8 data[2]; // 8; record data -- var size
} DlpReadRecordRespType;
//////////////////////////////////////////////////////////////////////////
// dlpReadRecordIDList
//////////////////////////////////////////////////////////////////////////
// Returns a list of unique record id's. May need to call more than once
// to get the entire list. dlpRespErrNotFound is returned when "start"
// is out of bounds
//
// Possible error codes
// dlpRespErrNotSupported,
// dlpRespErrParam,
// dlpRespErrNotFound,
// dlpRespErrNoneOpen
#define dlpReadRecordIDListReqArgID dlpFirstArgID
// dlpReadRecordIDListReqArgID request argument structure:
//
typedef struct DlpReadRecordIDListReqType {
// OFFSET
UInt8 dbID; // 0; database id
UInt8 flags; // 1; request flags
UInt16 start; // 2; starting record index (0-based)
UInt16 maxEntries; // 4; maximum number of entries, or
// 0xFFFF to return as many as possible
// TOTAL: 6 bytes;
} DlpReadRecordIDListReqType;
// dlpReadRecordIDListFlagSortDB: if set, DL Server will call the creator
// application to resort the database before returning the list.
#define dlpReadRecordIDListFlagSortDB 0x80
// Response argument structure:
//
#define dlpReadRecordIDListRespArgID dlpFirstArgID
typedef struct DlpReadRecordIDListRespHdrType {
// OFFSET
UInt16 numEntries; // 0; number of entries returned
// TOTAL: 2 bytes;
} DlpReadRecordIDListRespHdrType;
typedef struct DlpReadRecordIDListRespType {
// OFFSET
DlpReadRecordIDListRespHdrType //
header; // 0; fixed-size header
// FIXED SIZE: 2 bytes;
UInt32 recID[1]; // 8; list of record id's -- var size
} DlpReadRecordIDListRespType;
//////////////////////////////////////////////////////////////////////////
// dlpWriteRecord
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrParam,
// dlpRespErrNotFound
// dlpRespErrNotEnoughSpace
// dlpRespErrNotSupported
// dlpRespErrReadOnly
// dlpRespErrNoneOpen
// Request argument structure:
//
#define dlpWriteRecordReqArgID dlpFirstArgID
// dlpWriteRecordReqArgID -- required
typedef struct DlpWriteRecordReqHdrType {
// OFFSET
UInt8 dbID; // 0; database id
UInt8 flags; // 1; set unused bits to null!
UInt32 recordID; // 2; unique record id or null
UInt8 attributes; // 6; record attributes -- only
// dlpRecAttrSecret is allowed here
// v1.1 extension:
// dlpRecAttrDeleted, dlpRecAttrArchived and
// dlpRecAttrDirty are also allowed.
UInt8 category; // 7; record category
// TOTAL: 8 bytes;
} DlpWriteRecordReqHdrType;
#define dlpWriteRecordReqFlagDataIncluded 0x80 // original implementer of destop software always
// set this bit. Define it here for compatibility
typedef struct DlpWriteRecordReqType {
// OFFSET
DlpWriteRecordReqHdrType //
header; // 0; fixed-size header
// FIXED SIZE: 8 bytes;
UInt8 data[2]; // 8; record data -- var size
} DlpWriteRecordReqType;
// Response argument structure:
//
#define dlpWriteRecordRespArgID dlpFirstArgID
typedef struct DlpWriteRecordRespType {
// OFFSET
UInt32 recordID; // 0; record ID
// TOTAL: 4 bytes
} DlpWriteRecordRespType;
//////////////////////////////////////////////////////////////////////////
// dlpDeleteRecord
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrParam,
// dlpRespErrNotFound
// dlpRespErrNotSupported
// dlpRespErrReadOnly
// dlpRespErrNoneOpen
//
// Request argument structure:
//
#define dlpDeleteRecordReqArgID dlpFirstArgID
// Argument structure to delete by record ID(dlpDeleteRecordReqIDArgID):
typedef struct DlpDeleteRecordReqType {
// OFFSET
UInt8 dbID; // 0; database id
UInt8 flags; // 1; flags (dlpDeleteRecFlagDeleteAll)
UInt32 recordID; // 2; unique record id (see flags)
// TOTAL: 6 bytes;
} DlpDeleteRecordReqType;
// dlpDeleteRecFlagDeleteAll: if this flag is set, the reocordID field
// is ignored and all database records will be deleted
#define dlpDeleteRecFlagDeleteAll 0x80
// dlpDeleteRecFlagByCategory: if this flag is set, the least significant byte
// of the reocordID field contains the category id of records to be deleted (PalmOS 2.0)
#define dlpDeleteRecFlagByCategory 0x40
// Response argument structure:
//
// none.
//////////////////////////////////////////////////////////////////////////
// dlpReadResource
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrParam,
// dlpRespErrNotFound
// dlpRespErrNoneOpen
typedef enum {
dlpReadResourceIndexArgID = dlpFirstArgID,
dlpReadResourceTypeArgID
} DlpReadResourceReqArgID;
// dlpReadResourceIndexArgID request argument structure:
//
typedef struct DlpReadResourceByIndexReqType {
// OFFSET
UInt8 dbID; // 0; database id
UInt8 unused; // 1; unused -- set to null!
UInt16 index; // 2; resource index
UInt16 offset; // 4; offset into the resource
UInt16 numBytes; // 6; number of bytes to read starting
// at the offset(-1 = "to the end")
// TOTAL: 8 bytes;
} DlpReadResourceByIndexReqType;
// dlpReadResourceTypeArgID request argument structure:
//
typedef struct DlpReadResourceByTypeReqType {
// OFFSET
UInt8 dbID; // 0; database id
UInt8 unused; // 1; unused -- set to null!
UInt32 type; // 2; resource type
UInt16 id; // 6; resource id
UInt16 offset; // 8; offset into the resource
UInt16 numBytes; // 10; number of bytes to read starting
// at the offset(-1 = "to the end")
// TOTAL: 12 bytes;
} DlpReadResourceByTypeReqType;
// Response argument structure:
//
#define dlpReadResourceRespArgID dlpFirstArgID
typedef struct DlpReadResourceRespHdrType {
// OFFSET
UInt32 type; // 0; resource type
UInt16 id; // 4; resource id
UInt16 index; // 6; resource index
UInt16 resSize; // 8; total resource size in bytes
// TOTAL: 10 bytes;
} DlpReadResourceRespHdrType;
typedef struct DlpReadResourceRespType {
// OFFSET
DlpReadResourceRespHdrType //
header; // 0; fixed-size header
// FIXED SIZE: 6 bytes;
UInt8 resData[2]; // 6; resource data -- var size
} DlpReadResourceRespType;
//////////////////////////////////////////////////////////////////////////
// dlpWriteResource
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrNotEnoughSpace,
// dlpRespErrParam,
// dlpRespErrNoneOpen
// Request argument structure:
//
#define dlpWriteResourceReqArgID dlpFirstArgID
typedef struct DlpWriteResourceReqHdrType {
// OFFSET
UInt8 dbID; // 0; database id
UInt8 unused; // 1; inused -- set to null!
UInt32 type; // 2; resource type
UInt16 id; // 6; resource id
UInt16 resSize; // 8; total resource size
// TOTAL: 10 bytes;
} DlpWriteResourceReqHdrType;
typedef struct DlpWriteResourceReqType {
// OFFSET
DlpWriteResourceReqHdrType //
header; // 0; fixed-size header
// FIXED SIZE: 10 bytes;
UInt8 data[2]; // 10; resource data -- var size
} DlpWriteResourceReqType;
// Response argument structure:
//
// none.
//////////////////////////////////////////////////////////////////////////
// dlpWriteResourceStream
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrNotEnoughSpace,
// dlpRespErrParam,
// dlpRespErrNoneOpen
#pragma mark Dm Write Resource Stream
//
// Callback parameters
//
// Write calback parameters
typedef struct DlpWriteResourceCallbackParamType{
// OFFSET
MemPtr dmBufP; // 0: Locked dm heap handle
UInt32 numBytes; // 4: Expected File Size
UInt32 offset;
// TOTAL: 8 bytes
} DlpWriteResourceCallbackParamType;
typedef DlpWriteResourceCallbackParamType* DlpWriteResourceCallbackParamPtr;
// Request argument structure:
//
#define dlpWriteResourceStreamReqArgID dlpFirstArgID
typedef struct DlpWriteResourceStreamReqType {
// OFFSET
UInt8 dbID; // 0; database id
UInt8 unused; // 1; inused -- set to null!
UInt32 type; // 2; resource type
UInt16 id; // 6; resource id
UInt16 resSize; // 8; total resource size
// TOTAL: 10 bytes;
} DlpWriteResourceStreamReqType;
typedef DlpWriteResourceStreamReqType* DlpWriteResourceStreamReqPtr;
// Response argument structure:
//
// none.
//////////////////////////////////////////////////////////////////////////
// dlpWriteRecordStream
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrParam,
// dlpRespErrNotFound
// dlpRespErrNotEnoughSpace
// dlpRespErrNotSupported
// dlpRespErrReadOnly
// dlpRespErrNoneOpen
#pragma mark Dm Write Record Stream
//
// Callback parameters
//
// Write calback parameters
typedef struct DlpWriteRecordCallbackParamType{
// OFFSET
MemPtr dmBufP; // 0: Locked dm heap handle
UInt32 numBytes; // 4: Expected File Size
UInt32 offset;
// TOTAL: 8 bytes
} DlpWriteRecordCallbackParamType;
typedef DlpWriteRecordCallbackParamType* DlpWriteRecordCallbackParamPtr;
// Request argument structure:
//
#define dlpWriteRecordStreamReqArgID dlpFirstArgID
// dlpWriteRecordReqArgID -- required
typedef struct DlpWriteRecordStreamReqType {
// OFFSET
UInt8 dbID; // 0; database id
UInt8 flags; // 1; set unused bits to null!
UInt32 recordID; // 2; unique record id or null
UInt8 attributes; // 6; record attributes -- only
// dlpRecAttrSecret is allowed here
// v1.1 extension:
// dlpRecAttrDeleted, dlpRecAttrArchived and
// dlpRecAttrDirty are also allowed.
UInt8 category; // 7; record category
UInt32 recordSize;
// TOTAL: 8 bytes;
} DlpWriteRecordStreamReqType;
typedef DlpWriteRecordStreamReqType* DlpWriteRecordStreamReqPtr;
// Response argument structure:
//
#define dlpWriteRecordStreamRespArgID dlpFirstArgID
typedef struct DlpWriteRecordStreamRespType {
// OFFSET
UInt32 recordID; // 0; record ID
// TOTAL: 4 bytes
} DlpWriteRecordStreamRespType;
//////////////////////////////////////////////////////////////////////////
// dlpDeleteResource
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrParam,
// dlpRespErrNotFound
// dlpRespErrNotSupported
// dlpRespErrReadOnly
// dlpRespErrNoneOpen
// Request argument structure:
//
#define dlpDeleteResourceReqArgID dlpFirstArgID
typedef struct DlpDeleteResourceReqType {
// OFFSET
UInt8 dbID; // 0; database id
UInt8 flags; // 1; flags (dlpDeleteResFlagDeleteAll)
UInt32 type; // 2; resource type
UInt16 id; // 6; resource id
// TOTAL: 8 bytes;
} DlpDeleteResourceReqType;
// dlpDeleteResFlagDeleteAll: if set, all resources in the db will be deleted
#define dlpDeleteResFlagDeleteAll 0x80
// Response argument structure:
//
// none.
//////////////////////////////////////////////////////////////////////////
// dlpCleanUpDatabase
//////////////////////////////////////////////////////////////////////////
// Deletes all records which are marked as archived or deleted in the
// record database
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrParam,
// dlpRespErrReadOnly,
// dlpRespErrNotSupported
// dlpRespErrNoneOpen
// Request argument structure:
//
#define dlpCleanUpDatabaseReqArgID dlpFirstArgID
// The request argument is the 1-byte database ID returned in open/create
// DB responses.
// Response argument structure:
//
// none.
//////////////////////////////////////////////////////////////////////////
// dlpResetSyncFlags
//////////////////////////////////////////////////////////////////////////
// For record databases, reset all dirty flags.
// For both record and resource databases, set the last sync time to NOW
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrParam
// dlpRespErrReadOnly,
// dlpRespErrNoneOpen
// Request argument structure:
//
#define dlpResetSyncFlagsReqArgID dlpFirstArgID
// The request argument is the 1-byte database ID returned in open/create
// DB responses.
// Response argument structure:
//
// none.
//////////////////////////////////////////////////////////////////////////
// dlpCallApplication
//////////////////////////////////////////////////////////////////////////
// Call an application entry point via an action code
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrMemory,
// dlpRespErrParam,
// dlpRespErrNotFound
// Request argument structure:
//
enum {
dlpCallApplicationReqArgIDV10 = dlpFirstArgID, // req id for Pilot v1.0
dlpCallAppReqArgID // req id for Pilot v2.0 and later
};
// dlpCallApplicationReqArgIDV10:
typedef struct DlpCallApplicationReqHdrTypeV10 {
// OFFSET
UInt32 creator; // 0; app DB creator id
UInt16 action; // 4; action code
UInt16 paramSize; // 6; custom param size
// TOTAL: 8 bytes
} DlpCallApplicationReqHdrTypeV10;
typedef struct DlpCallApplicationReqTypeV10 {
// OFFSET
DlpCallApplicationReqHdrTypeV10 //
header; // 0; fixed-size header
// FIXED SIZE: 8 bytes
UInt8 paramData[2]; // 8; custom param data -- var size
} DlpCallApplicationReqTypeV10;
// dlpCallAppReqArgID (Pilot v2.0):
typedef struct DlpCallAppReqHdrType {
// OFFSET
UInt32 creator; // 0; DB creator id of target executable
UInt32 type; // 4; DB type id of target executable
UInt16 action; // 8; action code
UInt32 dwParamSize; // 10; custom param size in number of bytes
UInt32 dwReserved1; // 14; RESERVED -- set to NULL!!!
UInt32 dwReserved2; // 18; RESERVED -- set to NULL!!!
// TOTAL: 22 bytes
} DlpCallAppReqHdrType;
typedef struct DlpCallAppReqType {
// OFFSET
DlpCallAppReqHdrType //
hdr; // 0; fixed-size header
// FIXED SIZE: 22 bytes
UInt8 paramData[2]; // 22; custom param data -- var size
} DlpCallAppReqType;
// Response argument structure:
//
enum {
dlpCallApplicationRespArgIDV10 = dlpFirstArgID, // resp id for Pilot v1.0
dlpCallAppRespArgID // resp id for Pilot v2.0 and later
};
// dlpCallApplicationRespArgIDV10:
typedef struct DlpCallApplicationRespHdrTypeV10 {
// OFFSET
UInt16 action; // 0; action code which was called
UInt16 resultCode; // 2; result error code returned by action
UInt16 resultSize; // 4; custom result data size
// TOTAL: 6 bytes
} DlpCallApplicationRespHdrTypeV10;
typedef struct DlpCallApplicationRespTypeV10 {
// OFFSET
DlpCallApplicationRespHdrTypeV10 //
header; // 0; fixed-size header
// FIXED SIZE: 6 bytes
UInt8 resultData[2]; // 6; custom result data -- var size
} DlpCallApplicationRespTypeV10;
// dlpCallAppRespArgID:
typedef struct DlpCallAppRespHdrType {
// OFFSET
UInt32 dwResultCode; // 0; result error code returned by handler
UInt32 dwResultSize; // 4; custom result data size
UInt32 dwReserved1; // 8; RESERVED -- SET TO NULL!!!
UInt32 dwReserved2; // 12; RESERVED -- SET TO NULL!!!
// TOTAL: 16 bytes
} DlpCallAppRespHdrType;
typedef struct DlpCallAppRespType {
// OFFSET
DlpCallAppRespHdrType //
hdr; // 0; fixed-size header
// FIXED SIZE: 16 bytes
UInt8 resultData[2]; // 16; custom result data -- var size
} DlpCallAppRespType;
//////////////////////////////////////////////////////////////////////////
// dlpResetSystem
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrSystem
// Request argument structure:
//
// none.
// Response argument structure:
//
// none.
//////////////////////////////////////////////////////////////////////////
// dlpAddSyncLogEntry
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrNotEnoughSpace,
// dlpRespErrLimitExceeded,
// dlpRespErrParam
// Request argument structure:
//
#define dlpAddSyncLogEntryReqArgID dlpFirstArgID
typedef struct DlpAddSyncLogEntryReqType {
// OFFSET
UInt8 text[2]; // 0; entry text -- var size and
// null-terminated
} DlpAddSyncLogEntryReqType;
// Response argument structure:
//
// none.
//////////////////////////////////////////////////////////////////////////
// dlpProcessRPC
//////////////////////////////////////////////////////////////////////////
// Remote Procedure Call interface
//
// Request arguments:
// RPC command block
//
// Response arguments:
// RPC reply block
//
// Possible error codes
// 0 on success; otherwise error code from the TouchDown
// RPC executor
//
// NOTE: this is a low-level system command which does not use arg wrappers.
// Request argument structure:
//
// Block of RPC command data (no arg wrapper)
// Response argument structure:
//
// Block of RPC reply data of same length as command block(no arg wrapper)
//////////////////////////////////////////////////////////////////////////
// dlpOpenConduit
//////////////////////////////////////////////////////////////////////////
// This command is sent before each conduit is opened by the desktop.
// If the viewer has a cancel pending, it will return dlpRespErrCancelSync
// in the response header's errorCode field.
//
// Request arguments: none.
//
// Response arguments: none.
//
// Possible error codes
// dlpRespErrCancelSync
// Request argument structure:
//
// none.
// Response argument structure:
//
// none.
//////////////////////////////////////////////////////////////////////////
// dlpEndOfSync
//////////////////////////////////////////////////////////////////////////
// This command is sent by the desktop to end the sync.
//
// Request arguments: termination code: 0 = normal termination;
// otherwise the client is aborting the sync
//
// Possible error codes
// 0
// Request argument structure:
//
#define dlpEndOfSyncReqArgID dlpFirstArgID
typedef enum DlpSyncTermCode {
dlpTermCodeNormal = 0, // normal termination
dlpTermCodeOutOfMemory, // termination due to low memory on TD
dlpTermCodeUserCan, // user cancelled from desktop
dlpTermCodeOther, // catch-all abnormal termination code
dlpTermCodeIncompatibleProducts // incompatibility between desktop and handheld hotsync products
} DlpSyncTermCode;
typedef struct DlpEndOfSyncReqType {
// OFFSET
UInt16 termCode; // 0; termination code
// TOTAL: 2 bytes
} DlpEndOfSyncReqType;
// Response argument structure:
//
// none.
//////////////////////////////////////////////////////////////////////////
// dlpReadNextRecInCategory
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// see dlpReadRecord
#define dlpReadNextRecInCategoryReqArgID dlpFirstArgID
// dlpReadNextRecInCategoryReqArgID request argument structure:
//
typedef struct DlpReadNextRecInCategoryReqType {
// OFFSET
UInt8 dbID; // 0; database id
UInt8 category; // 1; category id
// TOTAL: 2 bytes;
} DlpReadNextRecInCategoryReqType;
// Response argument structure:
//
// Response argument id = dlpReadRecordRespArgID
// Response argument structure = DlpReadRecordRespType
//////////////////////////////////////////////////////////////////////////
// dlpReadNextModifiedRecInCategory
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// see dlpReadNextRecInCategory
// Request argument structure:
//
// same as dlpReadNextRecInCategory
// Response argument structure:
//
// same as dlpReadNextRecInCategory
//////////////////////////////////////////////////////////////////////////
// dlpReadAppPreference
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrMemory,
// dlpRespErrParam,
// dlpRespErrNotFound,
#define dlpReadAppPreferenceReqArgID dlpFirstArgID
// dlpReadAppPreferenceReqArgID request argument structure:
//
typedef struct DlpReadAppPreferenceReqType {
// OFFSET
UInt32 creator; // 0; application creator type
UInt16 id; // 4; preference id
UInt16 reqBytes; // 6; max. number of preference bytes requested;
// pass 0xFFFF for actual size
UInt8 flags; // 8; command flags: dlpAppPrefReqFlagBackedUp - if set, use backed-up pref db
UInt8 unused; // 9; reserved/padding -- set to NUL!
// TOTAL: 10 bytes;
} DlpReadAppPreferenceReqType;
#define dlpReadAppPrefActualSize 0xFFFF
#define dlpAppPrefReqFlagBackedUp 0x80
// Response argument structure:
//
#define dlpReadAppPreferenceRespArgID dlpFirstArgID
typedef struct DlpReadAppPreferenceRespHdrType {
// OFFSET
UInt16 version; // 0; version number of the application
UInt16 actualSize; // 2; actual preference data size
UInt16 retBytes; // 4; number of preference bytes returned
// TOTAL: 6 bytes
} DlpReadAppPreferenceRespHdrType;
typedef struct DlpReadAppPreferenceRespType {
// OFFSET
DlpReadAppPreferenceRespHdrType //
header; // 0; fixed-size header
// FIXED SIZE: 6 bytes
UInt8 data[2]; // 6; custom result data -- var size
} DlpReadAppPreferenceRespType;
//////////////////////////////////////////////////////////////////////////
// dlpWriteAppPreference
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrParam,
// dlpRespErrNotEnoughSpace
// Request argument structure:
//
#define dlpWriteAppPreferenceReqArgID dlpFirstArgID
typedef struct DlpWriteAppPreferenceReqHdrType {
// OFFSET
UInt32 creator; // 0; application creator type
UInt16 id; // 4; preference id
UInt16 version; // 6; version number of the application
UInt16 prefSize; // 8; preference size(in number of bytes)
UInt8 flags; // 10; command flags: dlpAppPrefReqFlagBackedUp - if set, use backed-up pref db
UInt8 unused; // 11; reserved/padding -- set to NUL!
// TOTAL: 12 bytes;
} DlpWriteAppPreferenceReqHdrType;
typedef struct DlpWriteAppPreferenceReqType {
// OFFSET
DlpWriteAppPreferenceReqHdrType //
header; // 0; fixed-size header
// FIXED SIZE: 12 bytes;
UInt8 data[2]; // 12; record data -- var size
} DlpWriteAppPreferenceReqType;
// Response argument structure:
//
// none.
//////////////////////////////////////////////////////////////////////////
// dlpReadNetSyncInfo
//////////////////////////////////////////////////////////////////////////
// Request arguments: none
//
// Response arguments:
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrMemory
// Request argument structure:
//
// none.
// Response argument structure:
//
#define dlpReadNetSyncInfoRespArgID dlpFirstArgID
typedef struct DlpReadNetSyncInfoRespHdrType {
// OFFSET
UInt8 lanSyncOn; // 0; non-zero if Lan Sync is enabled
UInt8 bReserved1; // 1; reserved -- SET TO NULL!
UInt32 dwReserved1; // 2; reserved -- SET TO NULL!
UInt32 dwReserved2; // 6; reserved -- SET TO NULL!
UInt32 dwReserved3; // 10; reserved -- SET TO NULL!
UInt32 dwReserved4; // 14; reserved -- SET TO NULL!
UInt16 syncPCNameSize;// 18; length of sync PC host name,
// including null (0 = no host name)
UInt16 syncPCAddrSize;// 20; length of sync PC address,
// including null (0 = no address)
UInt16 syncPCMaskSize;// 22; length of sync PC subnet mask,
// including null (0 = no mask)
// TOTAL: 24 bytes
} DlpReadNetSyncInfoRespHdrType;
typedef struct DlpReadNetSyncInfoRespType {
// OFFSET
DlpReadNetSyncInfoRespHdrType //
hdr; // 0; fixed-size header
// FIXED SIZE: 24 bytes
UInt8 syncAddr[2]; // 24; sync IP address/host name -- var size,
// null-terminated
} DlpReadNetSyncInfoRespType;
//////////////////////////////////////////////////////////////////////////
// dlpWriteNetSyncInfo
//////////////////////////////////////////////////////////////////////////
// Request arguments:
//
// Response arguments: none
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrNotEnoughSpace,
// dlpRespErrParam
// Request argument structure:
//
#define dlpWriteNetSyncInfoReqArgID dlpFirstArgID
#define dlpMaxHostAddrLength 255 // maximum PC host name length, not including NULL
typedef struct DlpWriteNetSyncInfoReqHdrType {
// OFFSET
UInt8 modFlags; // 0; flags indicating which values are being
// modified; see the dlpNetSyncInfoMod...
// flags defined below
UInt8 lanSyncOn; // 1; non-zero if Lan Sync is enabled
UInt32 dwReserved1; // 2; reserved -- SET TO NULL!
UInt32 dwReserved2; // 6; reserved -- SET TO NULL!
UInt32 dwReserved3; // 10; reserved -- SET TO NULL!
UInt32 dwReserved4; // 14; reserved -- SET TO NULL!
UInt16 syncPCNameSize;// 18; length of sync PC host name,
// including null (0 = no address/host name)
UInt16 syncPCAddrSize;// 20; length of sync PC address,
// including null (0 = no address)
UInt16 syncPCMaskSize;// 22; length of sync PC subnet mask,
// including null (0 = no mask)
// TOTAL: 24 bytes
} DlpWriteNetSyncInfoReqHdrType;
// Flags indicating which values are being changed by the dlpWriteNetSyncInfo
// request. These flags are used in the modFlags field of DlpWriteNetSyncInfoReqHdrType.
// These flags are additive.
//
#define dlpNetSyncInfoModLanSyncOn 0x80 // changing the "lan sync on" setting
#define dlpNetSyncInfoModSyncPCName 0x40 // changing the sync PC host name
#define dlpNetSyncInfoModSyncPCAddr 0x20 // changing the sync PC address
#define dlpNetSyncInfoModSyncPCMask 0x10 // changing the sync PC subnet mask
typedef struct DlpWriteNetSyncInfoReqType {
// OFFSET
DlpWriteNetSyncInfoReqHdrType
hdr; // 0; fixed-size header
// FIXED SIZE: 24 bytes
UInt8 syncAddr[2]; // 24; sync IP address/host name -- var size,
// null-terminated
} DlpWriteNetSyncInfoReqType;
// Response argument structure:
//
// none.
//////////////////////////////////////////////////////////////////////////
// dlpReadFeature
//////////////////////////////////////////////////////////////////////////
// Request arguments:
//
// Response arguments:
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrNotFound,
// dlpRespErrParam
// Request argument structure:
//
#define dlpReadFeatureReqArgID dlpFirstArgID
typedef struct DlpReadFeatureReqType {
// OFFSET
UInt32 dwFtrCreator; // 0; feature creator
UInt16 wFtrNum; // 4; feature number
// TOTAL: 6 bytes
} DlpReadFeatureReqType;
// Response argument structure:
//
#define dlpReadFeatureRespArgID dlpFirstArgID
typedef struct DlpReadFeatureRespType {
// OFFSET
UInt32 dwFeature; // 0; feature value
// TOTAL: 4 bytes
} DlpReadFeatureRespType;
//////////////////////////////////////////////////////////////////////////
// dlpFindDB
//////////////////////////////////////////////////////////////////////////
// Request arguments:
//
// Response arguments:
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrNotFound,
// dlpRespErrParam
// Request argument structure:
//
// dlpFindDBByNameReqArgID, dlpFindDBByTypeCreatorReqArgID and dlpFindDBByOpenHandleReqArgID
// are mutually exclusive
enum {
dlpFindDBByNameReqArgID = dlpFirstArgID, // req id for card + name based search
dlpFindDBByOpenHandleReqArgID, // req id for search given an open db handle
dlpFindDBByTypeCreatorReqArgID // req id for type + creator based iterative search
};
// Option flags
#define dlpFindDBOptFlagGetAttributes 0x80 // get database attributes -- this is
// an option to allow find operations to skip
// returning this data as a performance optimization
#define dlpFindDBOptFlagGetSize 0x40 // get record count and data size also -- this is
// an option because the operation can take a long
// time, which we would rather avoid if it is not needed
#define dlpFindDBOptFlagGetMaxRecSize 0x20 // get max rec/resource size -- this is
// an option because the operation can take a long
// time, which we would rather avoid if it is not needed
// (dlpFindDBOptFlagGetMaxRecSize is only supported for
// dlpFindDBByOpenHandleReqArgID)
// Request type for dlpdlpFindDBByNameReqArgID:
typedef struct DlpFindDBByNameReqHdrType {
// OFFSET
UInt8 bOptFlags; // 0; bitfield of dlpFindDBOptFlag... flags
UInt8 bCardNo; // 2; card number to search
// TOTAL: 4 bytes
} DlpFindDBByNameReqHdrType;
typedef struct DlpFindDBByNameReqType {
// OFFSET
DlpFindDBByNameReqHdrType //
header; // 0; fixed size header
// FIXED SIZE: 4 bytes
UInt8 name[2]; // variable size -- zero-terminated database name string
} DlpFindDBByNameReqType;
// Request type for dlpFindDBByOpenHandleReqArgID:
typedef struct DlpFindDBByOpenHandleReqType {
// OFFSET
UInt8 bOptFlags; // 0; bitfield of dlpFindDBOptFlag... flags
UInt8 bDbID; // 1; database id returned by dlpOpenDB or dlpCreateDB
// TOTAL: 2 bytes
} DlpFindDBByOpenHandleReqType;
// Request type for dlpFindDBByTypeCreatorReqArgID:
typedef struct DlpFindDBByTypeCreatorReqType {
// OFFSET
UInt8 bOptFlags; // 0; bitfield of dlpFindDBOptFlag... flags
UInt8 bSrchFlags; // 1; bitfield of dlpFindDBSrchFlag... flags
UInt32 dwType; // 2; db type id (zero = wildcard)
UInt32 dwCreator; // 6; db creator id (zero = wildcard)
// TOTAL: 10 bytes
} DlpFindDBByTypeCreatorReqType;
#define dlpFindDBSrchFlagNewSearch 0x80 // set to beging a new search
#define dlpFindDBSrchFlagOnlyLatest 0x40 // set to search for the latest version
// Response argument structures for dlpFindDBByNameReqArgID, dlpFindDBByOpenHandleReqArgID and
// dlpFindDBByTypeCreatorReqArgID (if found):
//
enum {
dlpFindDBBasicRespArgID = dlpFirstArgID, // resp arg id for basic info
// (if dlpFindDBOptFlagGetAttributes is set)
dlpFindDBSizeRespArgID // resp arg id for size info
// (if dlpFindDBOptFlagGetSize or dlpFindDBOptFlagGetMaxRecSize
// are set)
};
// dlpFindDBBasicRespArgID (returned only if dlpFindDBOptFlagGetAttributes is set):
typedef struct DlpFindDBBasicRespHdrType {
// OFFSET
UInt8 bCardNo; // 0; card number of database
UInt8 bReserved; // 1; RESERVED -- SET TO NULL
UInt32 dwLocalID; // 2; local id of the database (for internal use)
UInt32 dwOpenRef; // 6; db open ref of the database if it is currently opened
// by the caller; zero otherwise (for internal use) can
// change after read record list
DlpDBInfoHdrType info; //10; database info (creator, type, flags, etc.) MUST BE LAST FIELD
// TOTAL: 54 bytes
} DlpFindDBBasicRespHdrType;
typedef struct DlpFindDBBasicRespType {
// OFFSET
DlpFindDBBasicRespHdrType //
header; // 0; fixed-size header
// FIXED SIZE: 54 bytes
UInt8 name[2]; // variable size -- zero-terminated database name string
} DlpFindDBBasicRespType;
// dlpFindDBSizeRespArgID (returned only if dlpFindDBOptFlagGetSize or dlpFindDBOptFlagGetMaxRecSize is set):
typedef struct DlpFindDBSizeRespType {
// OFFSET
// Returned if dlpFindDBOptFlagGetSize is set for all queries:
// (otherwise, fields are set to zero)
UInt32 dwNumRecords; // 0; record/resource count
UInt32 dwTotalBytes; // 4; total bytes used by db
UInt32 dwDataBytes; // 8; bytes used for data
// Returned if dlpFindDBOptFlagGetSize is set for dlpFindDBByOpenHandleReqArgID only:
// (otherwise, fields are set to zero)
UInt32 dwAppBlkSize; //12; size of app info block size (for
// dlpFindDBByOpenHandleReqArgID only)
UInt32 dwSortBlkSize; //16; size of sort info block size(for
// dlpFindDBByOpenHandleReqArgID only)
//
// Returned if dlpFindDBOptFlagGetMaxRecSize is set for dlpFindDBByOpenHandleReqArgID only:
// (otherwise, field is set to zero)
UInt32 dwMaxRecSize; //20; size of largest record or resource in the database (for
// dlpFindDBByOpenHandleReqArgID + dlpFindDBOptFlagGetMaxRecSize only)
// TOTAL: 24 bytes
} DlpFindDBSizeRespType;
//////////////////////////////////////////////////////////////////////////
// dlpSetDBInfo
//////////////////////////////////////////////////////////////////////////
// Request arguments:
//
// Response arguments:
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrParam,
// dlpRespErrNotFound
// dlpRespErrNotEnoughSpace
// dlpRespErrNotSupported
// dlpRespErrReadOnly
// dlpRespErrNoneOpen
// Request argument structure:
//
enum {
dlpSetDBInfoReqArgID = dlpFirstArgID
};
typedef struct DlpSetDBInfoReqHdrType {
// OFFSET
UInt8 dbID; // 0; database id returned by dlpOpenDB or dlpCreateDB
UInt8 bReserved; // 1; RESERVED -- SET TO NULL
UInt16 wClrDbFlags; // 2; flags to clear; allowed DB flags: dlpDBFlagAppInfoDirty,
// dlpDBFlagBackup, dlpDBFlagOKToInstallNewer,
// dlpDBFlagResetAfterInstall, dlpDBFlagCopyPrevention;
// 0 = don't change
UInt16 wSetDbFlags; // 4; flags to set; allowed DB flags: dlpDBFlagAppInfoDirty,
// dlpDBFlagBackup, dlpDBFlagOKToInstallNewer,
// dlpDBFlagResetAfterInstall, dlpDBFlagCopyPrevention;
// 0 = don't change
UInt16 wDbVersion; // 6; database version; dlpSetDBInfoNoVerChange = don't change
DlpDateTimeType crDate; // 8; creation date; zero year = don't change
DlpDateTimeType modDate; //16; modification date; zero year = don't change
DlpDateTimeType bckUpDate; //24; backup date; zero year = don't change
UInt32 dwType; //32; database type id; zero = don't change
UInt32 dwCreator; //36; database creator id; zero = don't change
// TOTAL: 40 bytes
} DlpSetDBInfoReqHdrType;
#define dlpSetDBInfoNoVerChange 0xFFFF
typedef struct DlpSetDBInfoReqType {
// OFFSET
DlpSetDBInfoReqHdrType //
header; // 0; fixed size header
// FIXED SIZE: 40 bytes
UInt8 name[2]; // variable size -- zero-terminated database name string
} DlpSetDBInfoReqType;
// Response argument structure:
//
// none.
//////////////////////////////////////////////////////////////////////////
// dlpExpSlotEnumerate
//////////////////////////////////////////////////////////////////////////
// Get the used and total size of a volume
//
// Possible error codes
//
//
#pragma mark Exp Slot Enumerate
// Response argument structure:
//
#define dlpExpSlotsEnumerateRespArgID dlpFirstArgID
typedef struct DlpExpSlotsEnumerateRespHdrType {
// OFFSET
UInt16 numSlots; // 0: Number of slots
} DlpExpSlotsEnumerateRespHdrType;
typedef struct DlpExpSlotsEnumerateRespType {
// OFFSET
DlpExpSlotsEnumerateRespHdrType
header; // 2: Fixed Header
UInt16 slots[2]; // 0; Variable size number of volumes
} DlpExpSlotsEnumerateRespType;
typedef DlpExpSlotsEnumerateRespType* DlpExpSlotsEnumerateRespPtr;
//////////////////////////////////////////////////////////////////////////
// dlpExpCardPresent
//////////////////////////////////////////////////////////////////////////
// Get the used and total size of a volume
//
// Possible error codes
//
//
#pragma mark Exp Card Present
// Request argument structure:
//
#define dlpExpCardPresentReqArgID dlpFirstArgID
typedef struct DlpExpCardPresentReqType {
// OFFSET
UInt16 slotRef; // 0: Slot Reference
} DlpExpCardPresentReqType;
typedef DlpExpCardPresentReqType* DlpExpCardPresentReqPtr;
//////////////////////////////////////////////////////////////////////////
// dlpExpCardInfo
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// Fill in later.
#pragma mark Exp Card Info
// Request argument structure:
//
#define dlpExpCardInfoReqArgID dlpFirstArgID
typedef struct DlpExpCardInfoReqType {
// OFFSET
UInt16 slotRefNum; // 0; Slot Reference Number
} DlpExpCardInfoReqType;
typedef DlpExpCardInfoReqType* DlpExpCardInfoReqPtr;
// Response argument structure:
//
#define dlpExpCardInfoTypeRespArgID dlpFirstArgID
typedef struct DlpExpCardInfoRespHdrType {
// OFFSET
UInt32 capabilityFlags; // 0: Capabilities of the Slot
UInt16 numStrings;
} DlpExpCardInfoRespHdrType;
typedef struct DlpExpCardInfoRespType {
// OFFSET
DlpExpCardInfoRespHdrType
header; // 2: Fixed Header
UInt16 buffer[2]; // 0; Packed Strings buffer
} DlpExpCardInfoRespType;
typedef DlpExpCardInfoRespType* DlpExpCardInfoRespPtr;
//////////////////////////////////////////////////////////////////////////
// dlpVFSFileCustomControl
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// Fill in later.
#pragma mark VFS File Custom Control
// Request argument structure:
//
#define dlpVFSFileCustomControlReqArgID dlpFirstArgID
typedef struct DlpVFSFileCustomControlReqHdrType {
// OFFSET
UInt32 fsCreator; // 0;
UInt32 apiCreator; // 4;
UInt16 apiSelector; // 8;
UInt16 bufLen; // 10;
// TOTAL: 12 bytes
} DlpVFSFileCustomControlReqHdrType;
typedef struct DlpVFSFileCustomControlReqType {
// OFFSET
DlpVFSFileCustomControlReqHdrType//
header; // 0; fixed-size header
// FIXED SIZE: 12 bytes;
UInt16 buffer[2]; // 14; The path name and the
// new name are packed together
// both are zero terminated.
} DlpVFSFileCustomControlReqType;
typedef DlpVFSFileCustomControlReqType* DlpVFSFileCustomControlReqPtr;
// Response argument structure:
//
#define dlpVFSFileCustomControlRespArgID dlpFirstArgID
typedef struct DlpVFSFileCustomControlHdrType {
// OFFSET
UInt16 bufLen; // 0: Buffer length
} DlpVFSFileCustomControlHdrType;
typedef struct DlpVFSFileCustomControlRespType {
// OFFSET
DlpVFSFileCustomControlHdrType
header; // 2: Fixed Header
UInt16 buffer[2]; // 0; Variable size number of volumes
} DlpVFSFileCustomControlRespType;
typedef DlpVFSFileCustomControlRespType* DlpVFSFileCustomControlRespPtr;
//////////////////////////////////////////////////////////////////////////
// dlpVFSGetDefaultDirectory
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
#pragma mark VFS Get Default Directory
// Request argument structure:
//
#define dlpVFSGetDefaultDirReqArgID dlpFirstArgID
typedef struct DlpVFSGetDefaultDirReqHdrType {
// OFFSET
UInt16 volRefNum; // 0: Volume reference
} DlpVFSGetDefaultDirReqHdrType;
typedef struct DlpVFSGetDefaultDirReqType {
// OFFSET
DlpVFSGetDefaultDirReqHdrType
header; // 0; fixed-size header
// FIXED SIZE: 2 bytes;
UInt8 fileTypeStr[2];// 2; File type string -- var size
// zero-terminated
} DlpVFSGetDefaultDirReqType;
typedef DlpVFSGetDefaultDirReqType* DlpVFSGetDefaultDirReqPtr;
// Response argument structure:
//
#define dlpVFSGetDefaultDirectoryRespArgID dlpFirstArgID
typedef struct DlpVFSGetDefaultDirRespHdrType {
// OFFSET
UInt16 bufSize; // 0: Buffer Size
} DlpVFSGetDefaultDirRespHdrType;
typedef struct DlpVFSGetDefaultDirRespType {
// OFFSET
DlpVFSGetDefaultDirRespHdrType header;
Char dirPath[2]; // 0; directory path -- var size
// zero-terminated
} DlpVFSGetDefaultDirRespType;
typedef DlpVFSGetDefaultDirRespType* DlpVFSGetDefaultDirRespPtr;
//////////////////////////////////////////////////////////////////////////
// dlpVFSImportDatabaseFromFile
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
#pragma mark VFS Import DB From File
// Request argument structure:
//
#define dlpVFSImportDBFromFileReqArgID dlpFirstArgID
typedef struct DlpVFSImportDBFromFileReqHdrType {
// OFFSET
UInt16 volRefNum; // 0: Volume reference
} DlpVFSImportDBFromFileReqHdrType;
typedef struct DlpVFSImportDBFromFileReqType {
// OFFSET
DlpVFSImportDBFromFileReqHdrType
header; // 0; fixed-size header
// FIXED SIZE: 2 bytes;
UInt8 pathName[2]; // 2; path name -- var size
// zero-terminated
} DlpVFSImportDBFromFileReqType;
typedef DlpVFSImportDBFromFileReqType* DlpVFSImportDBFromFileReqPtr;
// Response argument structure:
//
#define dlpVFSImportDBFromFileRespArgID dlpFirstArgID
typedef struct DlpVFSImportDBFromFileRespType {
// OFFSET
UInt16 cardNo; // 0: Card Number
LocalID dbID; // 2: Database ID
} DlpVFSImportDBFromFileRespType; // TOTAL: 4 bytes
//////////////////////////////////////////////////////////////////////////
// dlpVFSExportDatabaseToFile
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
#pragma mark VFS Export DB To File
// Request argument structure:
//
#define dlpVFSExportDBToFileReqArgID dlpFirstArgID
typedef struct DlpVFSExportDBToFileReqHdrType {
// OFFSET
UInt16 volRefNum; // 0: Volume reference
UInt16 cardNo; // 2: Card Number
LocalID dbID; // 4: Database ID
} DlpVFSExportDBToFileReqHdrType;
typedef struct DlpVFSExportDBToFileFileReqType {
// OFFSET
DlpVFSExportDBToFileReqHdrType
header; // 0; fixed-size header
// FIXED SIZE: 2 bytes;
UInt8 pathName[2]; // 2; path name -- var size
// zero-terminated
} DlpVFSExportDBToFileReqType;
typedef DlpVFSExportDBToFileReqType* DlpVFSExportDBToFileReqPtr;
//////////////////////////////////////////////////////////////////////////
// dlpVFSFileCreate
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// Fill in later.
#pragma mark VFS File Create
// Request argument structure:
//
#define dlpVFSFileCreateReqArgID dlpFirstArgID
typedef struct DlpVFSFileCreateReqHdrType {
// OFFSET
UInt16 volRefNum; // 0;
// TOTAL: 2 bytes
} DlpVFSFileCreateReqHdrType;
typedef struct DlpVFSFileCreateReqType {
// OFFSET
DlpVFSFileCreateReqHdrType //
header; // 0; fixed-size header
// FIXED SIZE: 12 bytes;
Char path[2]; // 14; abs file path -- var size
// zero-terminated
} DlpVFSFileCreateReqType;
typedef DlpVFSFileCreateReqType* DlpVFSFileCreateReqPtr;
//////////////////////////////////////////////////////////////////////////
// VFS File Open
//////////////////////////////////////////////////////////////////////////
// Request arguments:
//
// Response arguments:
//
// Possible error codes
//
//
#pragma mark VFS File Open
// Request argument structure:
//
#define dlpVFSFileOpenReqArgID dlpFirstArgID
// Open modes
// don't let anyone else open it
#define dlpOpenFileModeExclusive (0x0001UL)
// open for read access
#define dlpOpenFileModeRead (0x0002UL)
// open for write access, implies exclusive
#define dlpOpenFileModeWrite (0x0004UL | dlpOpenFileModeExclusive)
// open for read/write access
#define dlpOpenFileModeReadWrite (dlpOpenFileModeRead | dlpOpenFileModeWrite)
typedef struct DlpVFSFileOpenReqHdrType {
// OFFSET
UInt16 volRefNum; // 0: Volume Reference Number
UInt16 openMode; // 2: Open Mode
// TOTAL: 4 bytes
} DlpVFSFileOpenReqHdrType;
typedef struct DlpVFSFileOpenReqType {
// OFFSET
DlpVFSFileOpenReqHdrType //
header; // 0; fixed-size header
// FIXED SIZE: 12 bytes;
Char path[2]; // 14; abs file path -- var size
// zero-terminated
} DlpVFSFileOpenReqType;
typedef DlpVFSFileOpenReqType* DlpVFSFileOpenReqPtr;
// Response argument structure:
//
#define dlpVFSFileOpenRespArgID dlpFirstArgID
typedef struct DlpVFSFileOpenRespType {
// OFFSET
FileRef fileRef; // 0; File reference
} DlpVFSFileOpenRespType; // TOTAL: 4 bytes
//////////////////////////////////////////////////////////////////////////
// dlpLoopBackTest
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// dlpRespErrSystem,
// dlpRespErrNotEnoughSpace,
// dlpRespErrParam,
// dlpRespErrNoneOpen
#pragma mark Loopback Test
// Request argument structure:
//
#define dlpLoopBackTestReqArgID dlpFirstArgID
typedef struct DlpLoopBackTestReqHdrType {
// OFFSET
UInt32 dataSize; // 0; total resource size
// TOTAL: 4 bytes;
} DlpLoopBackTestReqHdrType;
typedef struct DlpLoopBackTestReqType {
// OFFSET
DlpLoopBackTestReqHdrType //
header; // 0; fixed-size header
// FIXED SIZE: 10 bytes;
UInt8 data[2]; // 10; data -- var size
} DlpLoopBackTestReqType;
// Response argument structure:
//
//
#define dlpLoopBackTestRespArgID dlpFirstArgID
typedef struct DlpLoopBackTestRespHdrType {
// OFFSET
UInt32 dataSize; // 0; total resource size in bytes
// TOTAL: 4 bytes;
} DlpLoopBackTestRespHdrType;
typedef struct DlpLoopBackTestRespType {
// OFFSET
DlpLoopBackTestRespHdrType //
header; // 0; fixed-size header
// FIXED SIZE: 6 bytes;
UInt8 data[2]; // 6; data -- var size
} DlpLoopBackTestRespType;
//////////////////////////////////////////////////////////////////////////
// dlpVFSFileClose
//////////////////////////////////////////////////////////////////////////
// Get the used and total size of a volume
//
// Possible error codes
//
//
#pragma mark VFS File Close
// Request argument structure:
//
#define dlpVFSFileCloseReqArgID dlpFirstArgID
typedef struct DlpVFSFileCloseReqType {
// OFFSET
FileRef fileRef; // 0: File Reference
// TOTAL: 4 bytes
} DlpVFSFileCloseReqType;
typedef DlpVFSFileCloseReqType* DlpVFSFileCloseReqPtr;
//////////////////////////////////////////////////////////////////////////
// dlpVFSFileWrite
//////////////////////////////////////////////////////////////////////////
// Set the used and total size of a volume
//
// Possible error codes
//
//
#pragma mark VFS File Write
// Write calback parameters
typedef struct DlpVFSFileWriteCallbackParamType{
// OFFSET
FileRef fileRef; // 0: File Reference
UInt32 numBytes; // 4: Expected File Size
// TOTAL: 8 bytes
} DlpVFSFileWriteCallbackParamType;
// Request argument structure:
//
#define dlpVFSFileWriteReqArgID dlpFirstArgID
typedef struct DlpVFSFileWriteReqType {
// OFFSET
FileRef fileRef; // 0: File Reference
UInt32 numBytes; // 4: File Attributes
// TOTAL: 8 bytes
} DlpVFSFileWriteReqType;
typedef DlpVFSFileWriteReqType* DlpVFSFileWriteReqPtr;
// Response argument structure:
//
#define dlpVFSFileWriteRespArgID dlpFirstArgID
typedef struct DlpVFSFileWriteRespType {
// OFFSET
UInt32 numBytesWritten; // 0; File attributes
} DlpVFSFileWriteRespType; // TOTAL: 4 bytes
//////////////////////////////////////////////////////////////////////////
// dlpVFSFileRead
//////////////////////////////////////////////////////////////////////////
// Set the used and total size of a volume
//
// Possible error codes
//
//
#pragma mark VFS File Read
// Write calback parameters
typedef struct DlpVFSFileReadCallbackParamType{
// OFFSET
FileRef fileRef; // 0: File Reference
UInt32 numBytes; // 4: Expected File Size
// TOTAL: 8 bytes
} DlpVFSFileReadCallbackParamType;
typedef DlpVFSFileReadCallbackParamType* DlpVFSFileReadCallbackParamPtr;
// Request argument structure:
//
#define dlpVFSFileReadReqArgID dlpFirstArgID
typedef struct DlpVFSFileReadReqType {
// OFFSET
FileRef fileRef; // 0: File Reference
UInt32 numBytes; // 4: File Attributes
// TOTAL: 8 bytes
} DlpVFSFileReadReqType;
typedef DlpVFSFileReadReqType* DlpVFSFileReadReqPtr;
// Response argument structure:
//
#define dlpVFSFileReadRespArgID dlpFirstArgID
typedef struct DlpVFSFileReadRespType {
// OFFSET
UInt32 numBytes; // 0;
} DlpVFSFileReadRespType; // TOTAL: 4 bytes
//////////////////////////////////////////////////////////////////////////
// dlpVFSFileDelete
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
#pragma mark VFS File Delete
// Request argument structure:
//
#define dlpVFSFileDeleteReqArgID dlpFirstArgID
typedef struct DlpVFSFileDeleteReqHdrType {
// OFFSET
UInt16 volRefNum; // 0: Volume reference
} DlpVFSFileDeleteReqHdrType;
typedef struct DlpVFSFileDeleteReqType {
// OFFSET
DlpVFSFileDeleteReqHdrType
header; // 0; fixed-size header
// FIXED SIZE: 2 bytes;
UInt8 pathNameP[2]; // 2; Directory Name -- var size
// zero-terminated
} DlpVFSFileDeleteReqType;
typedef DlpVFSFileDeleteReqType* DlpVFSFileDeleteReqPtr;
//////////////////////////////////////////////////////////////////////////
// dlpVFSFileRename
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// Fill in later.
#pragma mark VFS File Rename
// Request argument structure:
//
#define dlpVFSFileRenameReqArgID dlpFirstArgID
typedef struct DlpVFSFileRenameReqHdrType {
// OFFSET
UInt16 volRefNum; // 0;
UInt16 numStrings; // 2;
// TOTAL: 4 bytes
} DlpVFSFileRenameReqHdrType;
typedef struct DlpVFSFileRenameReqType {
// OFFSET
DlpVFSFileRenameReqHdrType //
header; // 0; fixed-size header
// FIXED SIZE: 12 bytes;
Char packedNames[2];// 14; The path name and the
// new name are packed together
// both are zero terminated.
} DlpVFSFileRenameReqType;
typedef DlpVFSFileRenameReqType* DlpVFSFileRenameReqPtr;
//////////////////////////////////////////////////////////////////////////
// dlpVFSFileEOF
//////////////////////////////////////////////////////////////////////////
// Get the used and total size of a volume
//
// Possible error codes
//
//
#pragma mark VFS File EOF
// Request argument structure:
//
#define dlpVFSFileEOFReqArgID dlpFirstArgID
typedef struct DlpVFSFileEOFReqType {
// OFFSET
FileRef fileRef; // 0: File Reference
// TOTAL: 4 bytes
} DlpVFSFileEOFReqType;
typedef DlpVFSFileEOFReqType* DlpVFSFileEOFReqPtr;
#define dlpVFSFileEOFRespArgID dlpFirstArgID
//////////////////////////////////////////////////////////////////////////
// dlpVFSFileTell
//////////////////////////////////////////////////////////////////////////
// Get the used and total size of a volume
//
// Possible error codes
//
//
#pragma mark VFS File Tell
// Request argument structure:
//
#define dlpVFSFileTellReqArgID dlpFirstArgID
typedef struct DlpVFSFileTellReqType {
// OFFSET
FileRef fileRef; // 0: File reference number
// TOTAL: 2 bytes
} DlpVFSFileTellReqType;
typedef DlpVFSFileTellReqType* DlpVFSFileTellReqPtr;
// Response argument structure:
//
#define dlpVFSFileTellRespArgID dlpFirstArgID
typedef struct DlpVFSFileTellRespType {
// OFFSET
UInt32 filePosition; // 0; Position in the file
} DlpVFSFileTellRespType; // TOTAL: 4 bytes
//////////////////////////////////////////////////////////////////////////
// dlpVFSFileResize
//////////////////////////////////////////////////////////////////////////
// Set the used and total size of a volume
//
// Possible error codes
//
//
#pragma mark VFS File Resize
// Request argument structure:
//
#define dlpVFSFileResizeReqArgID dlpFirstArgID
typedef struct DlpVFSFileResizeReqType {
// OFFSET
FileRef fileRef; // 0: File Reference
UInt32 newSize; // 4: NewSize
// TOTAL: 8 bytes
} DlpVFSFileResizeReqType;
typedef DlpVFSFileResizeReqType* DlpVFSFileResizeReqPtr;
//////////////////////////////////////////////////////////////////////////
// dlpVFSFileGetAttributes
//////////////////////////////////////////////////////////////////////////
// Get the used and total size of a volume
//
// Possible error codes
//
//
#pragma mark VFS File Get Attributes
// Request argument structure:
//
#define dlpVFSGetAttributesReqArgID dlpFirstArgID
typedef struct DlpVFSGetAttributesReqType {
// OFFSET
FileRef fileRef; // 0: Volume reference number
// TOTAL: 4 bytes
} DlpVFSGetAttributesReqType;
typedef DlpVFSGetAttributesReqType* DlpVFSGetAttributesReqPtr;
// Response argument structure:
//
#define dlpVFSGetAttributesRespArgID dlpFirstArgID
typedef struct DlpVFSGetAttributesRespType {
// OFFSET
UInt32 attributes; // 0; File attributes
} DlpVFSGetAttributesRespType; // TOTAL: 4 bytes
//////////////////////////////////////////////////////////////////////////
// dlpVFSFileSetAttributes
//////////////////////////////////////////////////////////////////////////
// Set the used and total size of a volume
//
// Possible error codes
//
//
#pragma mark VFS File Set Attributes
// Request argument structure:
//
#define dlpVFSSetAttributesReqArgID dlpFirstArgID
typedef struct DlpVFSSetAttributesReqType {
// OFFSET
FileRef fileRef; // 0: File Reference
UInt32 attributes; // 4: File Attributes
// TOTAL: 8 bytes
} DlpVFSSetAttributesReqType;
typedef DlpVFSSetAttributesReqType* DlpVFSSetAttributesReqPtr;
//////////////////////////////////////////////////////////////////////////
// dlpVFSFileGetDate
//////////////////////////////////////////////////////////////////////////
// Get the used and total size of a volume
//
// Possible error codes
//
//
#pragma mark VFS File Get Dates
// Request argument structure:
//
#define dlpVFSGetDatesReqArgID dlpFirstArgID
typedef struct DlpVFSGetDatesReqType {
// OFFSET
FileRef fileRef; // 0: Volume reference number
UInt16 whichDate; // 4: Which date parameter
// TOTAL: 6 bytes
} DlpVFSGetDatesReqType;
typedef DlpVFSGetDatesReqType* DlpVFSGetDatesReqPtr;
// Response argument structure:
//
#define dlpVFSGetDatesRespArgID dlpFirstArgID
typedef struct DlpVFSGetDatesRespType {
// OFFSET
UInt32 date; // 0; The date requested
} DlpVFSGetDatesRespType; // TOTAL: 4 bytes
//////////////////////////////////////////////////////////////////////////
// dlpVFSFileSetDate
//////////////////////////////////////////////////////////////////////////
// Set the used and total size of a volume
//
// Possible error codes
//
//
#pragma mark VFS File Set Dates
// Request argument structure:
//
#define dlpVFSSetDatesReqArgID dlpFirstArgID
typedef struct DlpVFSSetDatesReqType {
// OFFSET
FileRef fileRef; // 0: File Reference
UInt16 whichDate; // 4: Which date parameter
UInt32 date; // 6: The date
// TOTAL: 10 bytes
} DlpVFSSetDatesReqType;
typedef DlpVFSSetDatesReqType* DlpVFSSetDatesReqPtr;
//////////////////////////////////////////////////////////////////////////
// dlpVFSFileGetSize
//////////////////////////////////////////////////////////////////////////
// Get the used and total size of a volume
//
// Possible error codes
//
//
#pragma mark VFS File Size
// Request argument structure:
//
#define dlpVFSGetFileSizeReqArgID dlpFirstArgID
typedef struct DlpVFSGetFileSizeReqType {
// OFFSET
FileRef fileRef; // 0: File Reference
// TOTAL: 4 bytes
} DlpVFSGetFileSizeReqType;
typedef DlpVFSGetFileSizeReqType* DlpVFSGetFileSizeReqPtr;
// Response argument structure:
//
#define dlpVFSGetFileSizeRespArgID dlpFirstArgID
typedef struct DlpVFSGetFileSizeRespType {
// OFFSET
UInt32 fileSize; // 0; Amount of the volume already used.
} DlpVFSGetFileSizeRespType; // TOTAL: 4 bytes
//////////////////////////////////////////////////////////////////////////
// dlpVFSDirCreate
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
#pragma mark VFS Directory Create
// Request argument structure:
//
#define dlpVFSDirCreateReqArgID dlpFirstArgID
typedef struct DlpVFSDirCreateReqHdrType {
// OFFSET
UInt16 volRefNum; // 0: Volume reference
} DlpVFSDirCreateReqHdrType;
typedef struct DlpVFSDirCreateReqType {
// OFFSET
DlpVFSDirCreateReqHdrType
header; // 0; fixed-size header
// FIXED SIZE: 2 bytes;
UInt8 dirNameP[2]; // 2; Directory Name -- var size
// zero-terminated
} DlpVFSDirCreateReqType;
typedef DlpVFSDirCreateReqType* DlpVFSDirCreateReqPtr;
//////////////////////////////////////////////////////////////////////////
// dlpVFSDirEntryEnumerate
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
// ADH, This needs to be reconciled with the desktop version.
// NEED To have some state information
#pragma mark VFS Directory Enumerate
// Request argument structure:
//
#define dlpVFSDirEntryEnumrerateReqArgID dlpFirstArgID
typedef struct DlpVFSDirEntryEnumrerateReqType {
// OFFSET
FileRef dirRefNum; // 0: Directory Reference number
UInt32 dirEntryIterator; // 4: Directory Iterator
UInt32 bufferSize; // 8: max return buffer
// TOTAL: 4 bytes
} DlpVFSDirEntryEnumrerateReqType;
typedef DlpVFSDirEntryEnumrerateReqType* DlpVFSDirEntryEnumrerateReqPtr;
// Response argument structure:
//
#define dlpVFSDirEntryEnumerateRespArgID dlpFirstArgID
typedef struct DlpVFSDirEntryEnumerateHdrType {
// OFFSET
UInt32 dirEntryIterator; // 0: Directory iterator
UInt32 numEntries; // 4: Number of directory entries
} DlpVFSDirEntryEnumerateHdrType;
typedef struct DlpVFSDirEntryType {
UInt32 attributes; // Directory attributes
Char name[2]; // Zero terminated string. Strings that have an even length
// will be null terminated and have a pad byte.
} DlpVFSDirEntryType;
typedef struct DlpVFSDirEntryEnumerateRespType {
// OFFSET
DlpVFSDirEntryEnumerateHdrType
header; // 2: Fixed Header
DlpVFSDirEntryType entries[2]; // 0; Variable size number of volumes
} DlpVFSDirEntryEnumerateRespType;
typedef DlpVFSDirEntryEnumerateRespType* DlpVFSDirEntryEnumerateRespPtr;
//////////////////////////////////////////////////////////////////////////
// dlpVFSVolumeFormat
//////////////////////////////////////////////////////////////////////////
// Get the used and total size of a volume
//
// Possible error codes
//
//
#pragma mark VFS Volume Format
// Request argument structure:
//
#define dlpVFSVolumeFormatReqArgID dlpFirstArgID
typedef struct DlpVFSVolumeFormatHdrType {
// OFFSET
UInt16 fsLibRefNum; // 0: File System Library Ref Num
UInt16 vfsMountParamLen;
UInt8 flags;
UInt8 unused;
} DlpVFSVolumeFormatHdrType;
typedef struct DlpVFSVolumeFormatReqType {
// OFFSET
DlpVFSVolumeFormatHdrType
header; // 2: Fixed Header
UInt8 mountParameters[2]; // 0; Mount parameters
} DlpVFSVolumeFormatReqType;
typedef DlpVFSVolumeFormatReqType* DlpVFSVolumeFormatReqPtr;
//////////////////////////////////////////////////////////////////////////
// dlpVFSVolumeEnumerate
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
#pragma mark VFS Volume Enumerate
// Response argument structure:
//
#define dlpVFSVolumeEnumerateRespArgID dlpFirstArgID
typedef struct DlpVFSVolumeEnumerateHdrType {
// OFFSET
UInt16 numVolumes; // 0: Number of volumes
} DlpVFSVolumeEnumerateHdrType;
typedef struct DlpVFSVolumeEnumerateRespType {
// OFFSET
DlpVFSVolumeEnumerateHdrType
header; // 2: Fixed Header
UInt16 volumes[2]; // 0; Variable size number of volumes
} DlpVFSVolumeEnumerateRespType;
typedef DlpVFSVolumeEnumerateRespType* DlpVFSVolumeEnumerateRespPtr;
//////////////////////////////////////////////////////////////////////////
// dlpVFSVolumeInfo
//////////////////////////////////////////////////////////////////////////
// Get the used and total size of a volume
//
// Possible error codes
//
//
#pragma mark VFS Volume Info
// Request argument structure:
//
#define dlpVFSVolumeInfoReqArgID dlpFirstArgID
typedef struct DlpVFSVolumeInfoReqType {
// OFFSET
UInt16 volRefNum; // 0: Volume reference number
// TOTAL: 2 bytes
} DlpVFSVolumeInfoReqType;
typedef DlpVFSVolumeInfoReqType* DlpVFSVolumeInfoReqPtr;
// Response argument structure:
//
#define dlpVFSVolumeInfoRespArgID dlpFirstArgID
typedef struct DlpVFSVolumeInfoRespType {
// OFFSET
UInt32 attributes; // 0: read-only etc.
UInt32 fsType; // 4: Filesystem type for this volume (defined below)
UInt32 fsCreator; // 8: Creator code of filesystem driver for this volume.
// For use with VFSCustomControl().
UInt32 mountClass; // 12: mount class that mounted this volume
// For slot based filesystems: (mountClass = VFSMountClass_SlotDriver)
UInt16 slotLibRefNum; // 16: Library on which the volume is mounted
UInt16 slotRefNum; // 18: ExpMgr slot number of card containing volume
UInt32 mediaType; // 20: Type of card media (mediaMemoryStick, mediaCompactFlash, etc...)
UInt32 reserved; // 24: reserved for future use (other mountclasses may need more space)
} DlpVFSVolumeInfoRespType; // TOTAL: 28 bytes
//////////////////////////////////////////////////////////////////////////
// dlpVFSVolumeGetLabel
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
#pragma mark VFS Volume Get Label
// Request argument structure:
//
#define dlpVFSVolumeGetLabelReqArgID dlpFirstArgID
typedef struct DlpVFSVolumeGetLabelReqType {
// OFFSET
UInt16 volRefNum; // 0: Volume reference
} DlpVFSVolumeGetLabelReqType; // TOTAL: 2 bytes
typedef DlpVFSVolumeGetLabelReqType* DlpVFSVolumeGetLabelReqPtr;
// Response argument structure:
//
#define dlpVFSVolumeGetLabelRespArgID dlpFirstArgID
typedef struct DlpVFSVolumeGetLabelRespType {
// OFFSET
UInt8 label[2]; // 0; label name text -- var size
// zero-terminated
} DlpVFSVolumeGetLabelRespType;
//////////////////////////////////////////////////////////////////////////
// dlpVFSVolumeSetLabel
//////////////////////////////////////////////////////////////////////////
//
// Possible error codes
#pragma mark VFS Volume Set Label
// Request argument structure:
//
#define dlpVFSVolumeSetLabelReqArgID dlpFirstArgID
typedef struct DlpVFSVolumeSetLabelReqHdrType {
// OFFSET
UInt16 volRefNum; // 0: Volume reference
} DlpVFSVolumeSetLabelReqHdrType;
typedef struct DlpVFSVolumeSetLabelReqType {
// OFFSET
DlpVFSVolumeSetLabelReqHdrType
header; // 0; fixed-size header
// FIXED SIZE: 2 bytes;
UInt8 label[2]; // 2; label name text -- var size
// zero-terminated
} DlpVFSVolumeSetLabelReqType;
typedef DlpVFSVolumeSetLabelReqType* DlpVFSVolumeSetLabelReqPtr;
//////////////////////////////////////////////////////////////////////////
// dlpVFSVolumeSize
//////////////////////////////////////////////////////////////////////////
// Get the used and total size of a volume
//
// Possible error codes
//
//
#pragma mark VFS Volume Size
// Request argument structure:
//
#define dlpVFSVolumeSizeReqArgID dlpFirstArgID
typedef struct DlpVFSVolumeSizeReqType {
// OFFSET
UInt16 volRefNum; // 0: Volume reference number
// TOTAL: 2 bytes
} DlpVFSVolumeSizeReqType;
typedef DlpVFSVolumeSizeReqType* DlpVFSVolumeSizeReqPtr;
// Response argument structure:
//
#define dlpVFSVolumeSizeRespArgID dlpFirstArgID
typedef struct DlpVFSVolumeSizeRespType {
// OFFSET
UInt32 volumeSizeUsed; // 0; Amount of the volume already used.
UInt32 volumeSizeTotal; // 4; Total size of the volume
} DlpVFSVolumeSizeRespType; // TOTAL: 8 bytes
//////////////////////////////////////////////////////////////////////////
// dlpVFSFileSeek
//////////////////////////////////////////////////////////////////////////
// Set the used and total size of a volume
//
// Possible error codes
//
//
#pragma mark VFS File Seek
// Request argument structure:
//
#define dlpVFSFileSeekReqArgID dlpFirstArgID
typedef struct DlpVFSFileSeekReqType {
// OFFSET
FileRef fileRef; // 0: File Reference
FileOrigin origin; // 4: File origin
Int32 offset; // 6: offset
// TOTAL: 10 bytes
} DlpVFSFileSeekReqType;
typedef DlpVFSFileSeekReqType* DlpVFSFileSeekReqPtr;
//////////////////////////////////////////////////////////////////////////
// dlpExpSlotMediaType
//////////////////////////////////////////////////////////////////////////
// Get the used and total size of a volume
//
// Possible error codes
//
//
#pragma mark Slot Media Type
// Request argument structure:
//
#define dlpExpSlotMediaTypeReqArgID dlpFirstArgID
typedef struct DlpExpSlotMediaTypeReqType {
// OFFSET
UInt16 slotNum; // 0: Which slot to query
// TOTAL: 2 bytes
} DlpExpSlotMediaTypeReqType;
typedef DlpExpSlotMediaTypeReqType* DlpExpSlotMediaTypeReqPtr;
// Response argument structure:
//
#define dlpExpSlotMediaTypeRespArgID dlpFirstArgID
typedef struct DlpExpSlotMediaTypeRespType {
// OFFSET
UInt32 mediaType; // 0; The Media Type
} DlpExpSlotMediaTypeRespType; // TOTAL: 4 bytes
/************************************************************
* Macros
*************************************************************/
#endif // __DLCOMMON_H__