257 lines
4.9 KiB
C
257 lines
4.9 KiB
C
/*
|
||
|
||
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_
|
||
|
||
|
||
|