|
|
/*
Copyright (c) 1992 Microsoft Corporation
Module Name:
desktop.h
Abstract:
This module contains the desktop database structures.
Author:
Jameel Hyder (microsoft!jameelh)
Revision History: 25 Apr 1992 Initial Version
Notes: Tab stop: 4 --*/
#ifndef _DESKTOP_
#define _DESKTOP_
#define AFP_DESKTOP_VERSION1 0x00010000
#define AFP_DESKTOP_VERSION2 0x00020000
#define AFP_DESKTOP_VERSION AFP_DESKTOP_VERSION2
typedef struct _ApplInfo { struct _ApplInfo * appl_Next; // link to next entry for this hash
DWORD appl_Creator; // Creator
DWORD appl_FileNum; // File Number of the application file
DWORD appl_Tag; // APPL Tag
} APPLINFO, *PAPPLINFO;
// NOTE: the first 4 fields of _ApplInfo2 must be exactly the same as
// _ApplInfo so that version 1 desktop APPLs can be read into the version 2
// structure.
typedef struct _ApplInfo2 { struct _ApplInfo2 * appl_Next; // link to next entry for this hash
DWORD appl_Creator; // Creator
DWORD appl_FileNum; // File Number of the application file
DWORD appl_Tag; // APPL Tag
DWORD appl_ParentID; // DirId of parent of the app file
} APPLINFO2, *PAPPLINFO2;
typedef struct _IconInfo { struct _IconInfo * icon_Next; // Link to Next entry for this hash
DWORD icon_Creator; // Creator
DWORD icon_Type; // Finder Type
DWORD icon_Tag; // ICON Tag
USHORT icon_IconType; // Icon type
SHORT icon_Size; // Size of Icon
// Icon bitmap follows the structure
} ICONINFO, *PICONINFO;
typedef struct _Desktop { DWORD dtp_Signature; // Signature
DWORD dtp_Version; // Version number
LONG dtp_cApplEnts; // Number of APPL entries
PAPPLINFO dtp_pApplInfo; // Pointer to 1st APPL entry
// Used only on disk
LONG dtp_cIconEnts; // Number of ICON entries
PICONINFO dtp_pIconInfo; // Pointer to 1st ICON entry
// Used only on disk
} DESKTOP, *PDESKTOP;
#define DESKTOPIO_BUFSIZE 8180 // 8192 - 12
#define HASH_ICON(Creator) ((Creator) % ICON_BUCKETS)
#define HASH_APPL(Creator) ((Creator) % APPL_BUCKETS)
GLOBAL SWMR AfpIconListLock EQU { 0 }; GLOBAL PICONINFO AfpGlobalIconList EQU NULL;
extern NTSTATUS AfpDesktopInit( VOID );
extern AFPSTATUS AfpAddIcon( IN struct _VolDesc * pVolDesc, IN DWORD Creator, IN DWORD Type, IN DWORD Tag, IN LONG IconSize, IN DWORD IconType, IN PBYTE pIconBitmap );
extern AFPSTATUS AfpLookupIcon( IN struct _VolDesc * pVolDesc, IN DWORD Creator, IN DWORD Type, IN LONG Length, IN DWORD IconType, OUT PLONG pActualLength, OUT PBYTE pIconBitMap );
extern AFPSTATUS AfpLookupIconInfo( IN struct _VolDesc * pVolDesc, IN DWORD Creator, IN LONG Index, OUT PDWORD pType, OUT PDWORD pIconType, OUT PDWORD pTag, OUT PLONG pSize );
extern AFPSTATUS AfpAddAppl( IN struct _VolDesc * pVolDesc, IN DWORD Creator, IN DWORD ApplTag, IN DWORD FileNum, IN BOOLEAN Internal, IN DWORD ParentID );
extern AFPSTATUS AfpLookupAppl( IN struct _VolDesc * pVolDesc, IN DWORD Creator, IN LONG Index, OUT PDWORD pApplTag, OUT PDWORD pFileNum, OUT PDWORD pParentID );
extern AFPSTATUS AfpRemoveAppl( IN struct _VolDesc * pVolDesc, IN DWORD Creator, IN DWORD FileNum );
extern AFPSTATUS AfpAddComment( IN PSDA pSda, IN struct _VolDesc * pVolDesc, IN PANSI_STRING Comment, IN struct _PathMapEntity * PME, IN BOOLEAN Directory, IN DWORD AfpId );
extern AFPSTATUS AfpGetComment( IN PSDA pSda, IN struct _VolDesc * pVolDesc, IN struct _PathMapEntity * PME, IN BOOLEAN Directory );
extern AFPSTATUS AfpRemoveComment( IN PSDA pSda, IN struct _VolDesc * pVolDesc, IN struct _PathMapEntity * PME, IN BOOLEAN Directory, IN DWORD AfpId );
extern AFPSTATUS AfpAddIconToGlobalList( IN DWORD Type, IN DWORD Creator, IN DWORD IconType, IN LONG IconSize, IN PBYTE pIconBitMap );
extern VOID AfpFreeGlobalIconList( VOID );
extern AFPSTATUS AfpInitDesktop( IN struct _VolDesc * pVolDesc, OUT BOOLEAN * pfNewVolume );
extern VOID AfpUpdateDesktop( IN struct _VolDesc * pVolDesc );
extern VOID AfpFreeDesktopTables( IN struct _VolDesc * pVolDesc );
#ifdef DESKTOP_LOCALS
#define ALLOC_ICONINFO(IconLen) (PICONINFO)AfpAllocPagedMemory((IconLen) + sizeof(ICONINFO))
#define ALLOC_APPLINFO() (PAPPLINFO2)AfpAllocPagedMemory(sizeof(APPLINFO2))
LOCAL AFPSTATUS afpGetGlobalIconInfo( IN DWORD Creator, OUT PDWORD pType, OUT PDWORD pIconType, OUT PDWORD pTag, OUT PLONG pSize );
LOCAL AFPSTATUS afpLookupIconInGlobalList( IN DWORD Creator, IN DWORD Type, IN DWORD IconType, IN PLONG pSize, OUT PBYTE pBitMap );
LOCAL NTSTATUS afpReadDesktopFromDisk( IN struct _VolDesc * pVolDesc, IN struct _FileSysHandle * pfshDesktop );
#endif // DESKTOP_LOCALS
#endif // _DESKTOP_
|