Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

257 lines
4.9 KiB

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