* Add NT_CONSOLE_PROPS and NT_FE_CONSOLE_PROPS and fix EXP_SZ_LINK.
* Add SHELL_LINK_INFO_* and some Shell Link Extra Data structures (for IShellLinkDataList).
[USERINIT][CPLS][DLLS]
* Add the now necessary wincon.h inclusion.
* Brought to you by Dominik Hornung.
CORE-7162 #resolve #comment Committed in r58930. Danke !

svn path=/trunk/; revision=58930
This commit is contained in:
Amine Khaldi 2013-05-04 20:43:16 +00:00
parent 148e43e691
commit 800947d692
24 changed files with 244 additions and 8 deletions

View file

@ -11,6 +11,7 @@
#include <winsvc.h> #include <winsvc.h>
#include <winuser.h> #include <winuser.h>
#include <windowsx.h> /* GET_X/Y_LPARAM */ #include <windowsx.h> /* GET_X/Y_LPARAM */
#include <wincon.h>
#include <tchar.h> #include <tchar.h>
#include <commdlg.h> #include <commdlg.h>
#include <cderr.h> #include <cderr.h>

View file

@ -7,6 +7,7 @@
#include <winreg.h> #include <winreg.h>
#include <wingdi.h> #include <wingdi.h>
#include <winuser.h> #include <winuser.h>
#include <wincon.h>
#include <commdlg.h> #include <commdlg.h>
#include <shlobj.h> #include <shlobj.h>
#include <stdio.h> #include <stdio.h>

View file

@ -8,6 +8,7 @@
#include <wingdi.h> #include <wingdi.h>
#include <winnls.h> #include <winnls.h>
#include <winuser.h> #include <winuser.h>
#include <wincon.h>
#include <richedit.h> #include <richedit.h>
#include <shellapi.h> #include <shellapi.h>
#include <shlwapi.h> #include <shlwapi.h>

View file

@ -12,6 +12,7 @@
#include <wingdi.h> #include <wingdi.h>
#include <winnls.h> #include <winnls.h>
#include <winver.h> #include <winver.h>
#include <wincon.h>
#include <shellapi.h> #include <shellapi.h>
#include <shlobj.h> #include <shlobj.h>
#include <shlobj_undoc.h> #include <shlobj_undoc.h>

View file

@ -37,6 +37,7 @@
#include <winreg.h> #include <winreg.h>
#include <wingdi.h> #include <wingdi.h>
#include <winnls.h> #include <winnls.h>
#include <wincon.h>
#include <ole2.h> #include <ole2.h>
#include <shlwapi.h> #include <shlwapi.h>

View file

@ -32,6 +32,7 @@
#include <winbase.h> #include <winbase.h>
#include <winreg.h> #include <winreg.h>
#include <wingdi.h> #include <wingdi.h>
#include <wincon.h>
#include <shellapi.h> #include <shellapi.h>
#include <regstr.h> #include <regstr.h>
#include <shlobj.h> #include <shlobj.h>

View file

@ -9,6 +9,7 @@
#include <winreg.h> #include <winreg.h>
#include <wingdi.h> #include <wingdi.h>
#include <winuser.h> #include <winuser.h>
#include <wincon.h>
#include <shellapi.h> #include <shellapi.h>
#include <commdlg.h> #include <commdlg.h>
#include <cpl.h> #include <cpl.h>

View file

@ -7,6 +7,7 @@
#include <winreg.h> #include <winreg.h>
#include <wingdi.h> #include <wingdi.h>
#include <winuser.h> #include <winuser.h>
#include <wincon.h>
#include <commdlg.h> #include <commdlg.h>
#include <cplext.h> #include <cplext.h>
#include <tchar.h> #include <tchar.h>

View file

@ -11,6 +11,7 @@
#include <winreg.h> #include <winreg.h>
#include <wingdi.h> #include <wingdi.h>
#include <winnls.h> #include <winnls.h>
#include <wincon.h>
#include <powrprof.h> #include <powrprof.h>
#include <tchar.h> #include <tchar.h>
#include <cpl.h> #include <cpl.h>

View file

@ -9,6 +9,7 @@
#include <windef.h> #include <windef.h>
#include <winbase.h> #include <winbase.h>
#include <wingdi.h> #include <wingdi.h>
#include <wincon.h>
#include <tchar.h> #include <tchar.h>
#include <shlobj.h> #include <shlobj.h>
#include <dll/desk/deskcplx.h> #include <dll/desk/deskcplx.h>

View file

@ -9,6 +9,7 @@
#include <windef.h> #include <windef.h>
#include <winbase.h> #include <winbase.h>
#include <wingdi.h> #include <wingdi.h>
#include <wincon.h>
#include <tchar.h> #include <tchar.h>
#include <shlobj.h> #include <shlobj.h>
#include <dll/desk/deskcplx.h> #include <dll/desk/deskcplx.h>

View file

@ -5,6 +5,7 @@
#include <windef.h> #include <windef.h>
#include <winbase.h> #include <winbase.h>
#include <winreg.h> #include <winreg.h>
#include <wincon.h>
#include <shellapi.h> #include <shellapi.h>
#include <shlobj.h> #include <shlobj.h>
#include <tchar.h> #include <tchar.h>

View file

@ -7,6 +7,7 @@
#include <winreg.h> #include <winreg.h>
#include <wingdi.h> #include <wingdi.h>
#include <winnls.h> #include <winnls.h>
#include <wincon.h>
#include <shellapi.h> #include <shellapi.h>
#include <shlobj.h> #include <shlobj.h>
#include <shlobj_undoc.h> #include <shlobj_undoc.h>

View file

@ -165,6 +165,7 @@ typedef struct {
#include "wingdi.h" #include "wingdi.h"
#include "winuser.h" #include "winuser.h"
#include "winnls.h" #include "winnls.h"
#include "wincon.h"
#include "commctrl.h" #include "commctrl.h"
#include "shlobj.h" #include "shlobj.h"
#include "shellapi.h" #include "shellapi.h"

View file

@ -33,6 +33,7 @@
//#include "windef.h" //#include "windef.h"
//#include "winbase.h" //#include "winbase.h"
//#include "winuser.h" //#include "winuser.h"
#include "wincon.h"
#include <shlobj.h> #include <shlobj.h>
//#include "objbase.h" //#include "objbase.h"
//#include "commdlg.h" //#include "commdlg.h"

View file

@ -31,6 +31,7 @@
#include <winbase.h> #include <winbase.h>
#include <wingdi.h> #include <wingdi.h>
//#include "winuser.h" //#include "winuser.h"
#include <wincon.h>
//#include "ole2.h" //#include "ole2.h"
//#include "olectl.h" //#include "olectl.h"

View file

@ -33,6 +33,7 @@
//#include "winnls.h" //#include "winnls.h"
#include <shlwapi.h> #include <shlwapi.h>
#include <wingdi.h> #include <wingdi.h>
#include <wincon.h>
#include <wine/debug.h> #include <wine/debug.h>
//#include "msi.h" //#include "msi.h"
//#include "msiquery.h" //#include "msiquery.h"

View file

@ -15,6 +15,7 @@
#include <winuser.h> #include <winuser.h>
#include <winnls.h> #include <winnls.h>
#include <windowsx.h> #include <windowsx.h>
#include <wincon.h>
#include <newdev.h> #include <newdev.h>
#include <regstr.h> #include <regstr.h>
#include <cfgmgr32.h> #include <cfgmgr32.h>

View file

@ -34,6 +34,7 @@
#include <winsvc.h> #include <winsvc.h>
#include <winver.h> #include <winver.h>
#include <wingdi.h> #include <wingdi.h>
#include <wincon.h>
#include <objbase.h> #include <objbase.h>
#include <lzexpand.h> #include <lzexpand.h>
#include <cfgmgr32.h> #include <cfgmgr32.h>

View file

@ -15,6 +15,7 @@
#include <wingdi.h> #include <wingdi.h>
#include <winreg.h> #include <winreg.h>
#include <winuser.h> #include <winuser.h>
#include <wincon.h>
#include <shellapi.h> #include <shellapi.h>
#include <commdlg.h> #include <commdlg.h>
#include <ddeml.h> #include <ddeml.h>

View file

@ -43,6 +43,7 @@
//#include "winuser.h" //#include "winuser.h"
#include <winver.h> #include <winver.h>
#include <winnetwk.h> #include <winnetwk.h>
#include <wincon.h>
#include <mmsystem.h> #include <mmsystem.h>
//#include "objbase.h" //#include "objbase.h"
//#include "exdisp.h" //#include "exdisp.h"

View file

@ -12,6 +12,7 @@
#include <winnls.h> #include <winnls.h>
#include <winuser.h> #include <winuser.h>
#include <windowsx.h> #include <windowsx.h>
#include <wincon.h>
#define NTOS_MODE_USER #define NTOS_MODE_USER
#include <ndk/cmfuncs.h> #include <ndk/cmfuncs.h>
#include <ndk/rtlfuncs.h> #include <ndk/rtlfuncs.h>

View file

@ -1449,7 +1449,7 @@ typedef struct {
typedef struct { typedef struct {
DWORD cbSize; DWORD cbSize;
DWORD cbSignature; DWORD dwSignature;
CHAR szTarget[MAX_PATH]; CHAR szTarget[MAX_PATH];
WCHAR szwTarget[MAX_PATH]; WCHAR szwTarget[MAX_PATH];
} EXP_SZ_LINK, *LPEXP_SZ_LINK; } EXP_SZ_LINK, *LPEXP_SZ_LINK;
@ -1467,14 +1467,45 @@ typedef struct {
BYTE abPropertyStorage[1]; BYTE abPropertyStorage[1];
} EXP_PROPERTYSTORAGE; } EXP_PROPERTYSTORAGE;
#define EXP_SZ_LINK_SIG 0xa0000001 #ifdef LF_FACESIZE
#define NT_CONSOLE_PROPS_SIG 0xa0000002 typedef struct {
#define NT_FE_CONSOLE_PROPS_SIG 0xa0000004 DATABLOCK_HEADER dbh;
#define EXP_SPECIAL_FOLDER_SIG 0xa0000005 WORD wFillAttribute;
#define EXP_DARWIN_ID_SIG 0xa0000006 WORD wPopupFillAttribute;
#define EXP_SZ_ICON_SIG 0xa0000007 COORD dwScreenBufferSize;
COORD dwWindowSize;
COORD dwWindowOrigin;
DWORD nFont;
DWORD nInputBufferSize;
COORD dwFontSize;
UINT uFontFamily;
UINT uFontWeight;
WCHAR FaceName[LF_FACESIZE];
UINT uCursorSize;
BOOL bFullScreen;
BOOL bQuickEdit;
BOOL bInsertMode;
BOOL bAutoPosition;
UINT uHistoryBufferSize;
UINT uNumberOfHistoryBuffers;
BOOL bHistoryNoDup;
COLORREF ColorTable[16];
} NT_CONSOLE_PROPS, *LPNT_CONSOLE_PROPS;
#endif
typedef struct {
DATABLOCK_HEADER dbh;
UINT uCodePage;
} NT_FE_CONSOLE_PROPS, *LPNT_FE_CONSOLE_PROPS;
#define EXP_SZ_LINK_SIG 0xa0000001 /* EXP_SZ_LINK */
#define NT_CONSOLE_PROPS_SIG 0xa0000002 /* NT_CONSOLE_PROPS */
#define NT_FE_CONSOLE_PROPS_SIG 0xa0000004 /* NT_FE_CONSOLE_PROPS */
#define EXP_SPECIAL_FOLDER_SIG 0xa0000005 /* EXP_SPECIAL_FOLDER */
#define EXP_DARWIN_ID_SIG 0xa0000006 /* EXP_DARWIN_LINK */
#define EXP_SZ_ICON_SIG 0xa0000007 /* EXP_SZ_LINK */
#define EXP_LOGO3_ID_SIG EXP_SZ_ICON_SIG /* Old SDKs only */ #define EXP_LOGO3_ID_SIG EXP_SZ_ICON_SIG /* Old SDKs only */
#define EXP_PROPERTYSTORAGE_SIG 0xa0000009 #define EXP_PROPERTYSTORAGE_SIG 0xa0000009 /* EXP_PROPERTYSTORAGE */
typedef struct _SHChangeDWORDAsIDList { typedef struct _SHChangeDWORDAsIDList {
USHORT cb; USHORT cb;

View file

@ -2,6 +2,7 @@
* ReactOS undocumented shell interface * ReactOS undocumented shell interface
* *
* Copyright 2009 Andrew Hill <ash77 at domain reactos.org> * Copyright 2009 Andrew Hill <ash77 at domain reactos.org>
* Copyright 2013 Dominik Hornung
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -867,6 +868,188 @@ typedef struct tagSHELL_LINK_HEADER
DWORD dwReserved3; DWORD dwReserved3;
} SHELL_LINK_HEADER, *LPSHELL_LINK_HEADER; } SHELL_LINK_HEADER, *LPSHELL_LINK_HEADER;
/*****************************************************************************
* SHELL_LINK_INFOA/W
* If cbHeaderSize == 0x0000001C then use SHELL_LINK_INFOA
* If cbHeaderSize >= 0x00000024 then use SHELL_LINK_INFOW
*/
typedef struct tagSHELL_LINK_INFOA
{
/* Size of the link info data */
DWORD cbSize;
/* Size of this structure (ANSI: = 0x0000001C) */
DWORD cbHeaderSize;
/* Specifies which fields are present/populated (SLI_*) */
DWORD dwFlags;
/* Offset of the VolumeID field (SHELL_LINK_INFO_VOLUME_ID) */
DWORD cbVolumeIDOffset;
/* Offset of the LocalBasePath field (ANSI, NULL-terminated string) */
DWORD cbLocalBasePathOffset;
/* Offset of the CommonNetworkRelativeLink field (SHELL_LINK_INFO_CNR_LINK) */
DWORD cbCommonNetworkRelativeLinkOffset;
/* Offset of the CommonPathSuffix field (ANSI, NULL-terminated string) */
DWORD cbCommonPathSuffixOffset;
} SHELL_LINK_INFOA, *LPSHELL_LINK_INFOA;
typedef struct tagSHELL_LINK_INFOW
{
/* Size of the link info data */
DWORD cbSize;
/* Size of this structure (Unicode: >= 0x00000024) */
DWORD cbHeaderSize;
/* Specifies which fields are present/populated (SLI_*) */
DWORD dwFlags;
/* Offset of the VolumeID field (SHELL_LINK_INFO_VOLUME_ID) */
DWORD cbVolumeIDOffset;
/* Offset of the LocalBasePath field (ANSI, NULL-terminated string) */
DWORD cbLocalBasePathOffset;
/* Offset of the CommonNetworkRelativeLink field (SHELL_LINK_INFO_CNR_LINK) */
DWORD cbCommonNetworkRelativeLinkOffset;
/* Offset of the CommonPathSuffix field (ANSI, NULL-terminated string) */
DWORD cbCommonPathSuffixOffset;
/* Offset of the LocalBasePathUnicode field (Unicode, NULL-terminated string) */
DWORD cbLocalBasePathUnicodeOffset;
/* Offset of the CommonPathSuffixUnicode field (Unicode, NULL-terminated string) */
DWORD cbCommonPathSuffixUnicodeOffset;
} SHELL_LINK_INFOW, *LPSHELL_LINK_INFOW;
/* VolumeID, LocalBasePath, LocalBasePathUnicode(cbHeaderSize >= 0x24) are present */
#define SLI_VALID_LOCAL 0x00000001
/* CommonNetworkRelativeLink is present */
#define SLI_VALID_NETWORK 0x00000002
/*****************************************************************************
* SHELL_LINK_INFO_VOLUME_IDA/W
* If cbVolumeLabelOffset != 0x00000014 (should be 0x00000010) then use
* SHELL_LINK_INFO_VOLUME_IDA
* If cbVolumeLabelOffset == 0x00000014 then use SHELL_LINK_INFO_VOLUME_IDW
*/
typedef struct tagSHELL_LINK_INFO_VOLUME_IDA
{
/* Size of the VolumeID field (> 0x00000010) */
DWORD cbSize;
/* Drive type of the drive the link target is stored on (DRIVE_*) */
DWORD dwDriveType;
/* Serial number of the volume the link target is stored on */
DWORD nDriveSerialNumber;
/* Offset of the volume label (ANSI, NULL-terminated string).
Must be != 0x00000014 (see tagSHELL_LINK_INFO_VOLUME_IDW) */
DWORD cbVolumeLabelOffset;
} SHELL_LINK_INFO_VOLUME_IDA, *LPSHELL_LINK_INFO_VOLUME_IDA;
typedef struct tagSHELL_LINK_INFO_VOLUME_IDW
{
/* Size of the VolumeID field (> 0x00000010) */
DWORD cbSize;
/* Drive type of the drive the link target is stored on (DRIVE_*) */
DWORD dwDriveType;
/* Serial number of the volume the link target is stored on */
DWORD nDriveSerialNumber;
/* Offset of the volume label (ANSI, NULL-terminated string).
If the value of this field is 0x00000014, ignore it and use
cbVolumeLabelUnicodeOffset! */
DWORD cbVolumeLabelOffset;
/* Offset of the volume label (Unicode, NULL-terminated string).
If the value of the VolumeLabelOffset field is not 0x00000014,
this field must be ignored (==> it doesn't exists ==> ANSI). */
DWORD cbVolumeLabelUnicodeOffset;
} SHELL_LINK_INFO_VOLUME_IDW, *LPSHELL_LINK_INFO_VOLUME_IDW;
/*****************************************************************************
* SHELL_LINK_INFO_CNR_LINKA/W (CNR = Common Network Relative)
* If cbNetNameOffset == 0x00000014 then use SHELL_LINK_INFO_CNR_LINKA
* If cbNetNameOffset > 0x00000014 then use SHELL_LINK_INFO_CNR_LINKW
*/
typedef struct tagSHELL_LINK_INFO_CNR_LINKA
{
/* Size of the CommonNetworkRelativeLink field (>= 0x00000014) */
DWORD cbSize;
/* Specifies which fields are present/populated (SLI_CNR_*) */
DWORD dwFlags;
/* Offset of the NetName field (ANSI, NULLterminated string) */
DWORD cbNetNameOffset;
/* Offset of the DeviceName field (ANSI, NULLterminated string) */
DWORD cbDeviceNameOffset;
/* Type of the network provider (WNNC_NET_* defined in winnetwk.h) */
DWORD dwNetworkProviderType;
} SHELL_LINK_INFO_CNR_LINKA, *LPSHELL_LINK_INFO_CNR_LINKA;
typedef struct tagSHELL_LINK_INFO_CNR_LINKW
{
/* Size of the CommonNetworkRelativeLink field (>= 0x00000014) */
DWORD cbSize;
/* Specifies which fields are present/populated (SLI_CNR_*) */
DWORD dwFlags;
/* Offset of the NetName field (ANSI, NULLterminated string) */
DWORD cbNetNameOffset;
/* Offset of the DeviceName field (ANSI, NULLterminated string) */
DWORD cbDeviceNameOffset;
/* Type of the network provider (WNNC_NET_* defined in winnetwk.h) */
DWORD dwNetworkProviderType;
/* Offset of the NetNameUnicode field (Unicode, NULLterminated string) */
DWORD cbNetNameUnicodeOffset;
/* Offset of the DeviceNameUnicode field (Unicode, NULLterminated string) */
DWORD cbDeviceNameUnicodeOffset;
} SHELL_LINK_INFO_CNR_LINKW, *LPSHELL_LINK_INFO_CNR_LINKW;
/* DeviceName is present */
#define SLI_CNR_VALID_DEVICE 0x00000001
/* NetworkProviderType is present */
#define SLI_CNR_VALID_NET_TYPE 0x00000002
/*****************************************************************************
* Shell Link Extra Data (IShellLinkDataList)
*/
typedef struct tagEXP_TRACKER
{
/* .cbSize = 0x00000060, .dwSignature = 0xa0000003 */
DATABLOCK_HEADER dbh;
/* Length >= 0x00000058 */
DWORD nLength;
/* Must be 0x00000000 */
DWORD nVersion;
/* NetBIOS name (ANSI, unused bytes are set to zero) */
CHAR szMachineID[16]; /* "variable" >= 16 (?) */
/* Some GUIDs for the Link Tracking service (from the FS?) */
GUID guidDroidVolume;
GUID guidDroidObject;
GUID guidDroidBirthVolume;
GUID guidDroidBirthObject;
} EXP_TRACKER, *LPEXP_TRACKER;
typedef struct tagEXP_SHIM
{
/* .cbSize >= 0x00000088, .dwSignature = 0xa0000008 */
DATABLOCK_HEADER dbh;
/* Name of a shim layer to apply (Unicode, unused bytes are set to zero) */
WCHAR szwLayerName[64]; /* "variable" >= 64 */
} EXP_SHIM, *LPEXP_SHIM;
typedef struct tagEXP_KNOWN_FOLDER
{
/* .cbSize = 0x0000001c, .dwSignature = 0xa000000b */
DATABLOCK_HEADER dbh;
/* A GUID value that identifies a known folder */
GUID guidKnownFolder;
/* Specifies the location of the ItemID of the first child
segment of the IDList specified by guidKnownFolder */
DWORD cbOffset;
} EXP_KNOWN_FOLDER, *LPEXP_KNOWN_FOLDER;
typedef struct tagEXP_VISTA_ID_LIST
{
/* .cbSize >= 0x0000000a, .dwSignature = 0xa000000c */
DATABLOCK_HEADER dbh;
/* Specifies an alternate IDList that can be used instead
of the "normal" IDList (SLDF_HAS_ID_LIST) */
/* LPITEMIDLIST pIDList; (variable) */
} EXP_VISTA_ID_LIST, *LPEXP_VISTA_ID_LIST;
#define EXP_TRACKER_SIG 0xa0000003
#define EXP_SHIM_SIG 0xa0000008
#define EXP_KNOWN_FOLDER_SIG 0xa000000b
#define EXP_VISTA_ID_LIST_SIG 0xa000000c
#include <poppack.h> #include <poppack.h>
#ifdef __cplusplus #ifdef __cplusplus