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_
|
|||
|
|
|||
|
|
|||
|
|