winedump: Print the network share name in .lnk files.

oldstable
Hans Leidekker 2010-05-14 16:46:06 +02:00 committed by Alexandre Julliard
parent 3a5ddab91d
commit f6612adcd2
1 changed files with 26 additions and 3 deletions

View File

@ -118,6 +118,15 @@ typedef struct _LOCAL_VOLUME_INFO
DWORD dwVolLabelOfs;
} LOCAL_VOLUME_INFO;
typedef struct _NETWORK_VOLUME_INFO
{
DWORD dwSize;
DWORD dwUnkown1;
DWORD dwShareNameOfs;
DWORD dwReserved;
DWORD dwUnknown2;
} NETWORK_VOLUME_INFO;
typedef struct
{
DWORD cbSize;
@ -232,9 +241,10 @@ static int dump_location(void)
printf("Header size = %d\n", loc->dwHeaderSize);
printf("Flags = %08x\n", loc->dwFlags);
/* dump out information about the volume the link points to */
printf("Volume ofs = %08x ", loc->dwVolTableOfs);
if (loc->dwVolTableOfs && (loc->dwVolTableOfs<loc->dwTotalSize))
/* dump information about the local volume the link points to */
printf("Local volume ofs = %08x ", loc->dwVolTableOfs);
if (loc->dwVolTableOfs &&
loc->dwVolTableOfs + sizeof(LOCAL_VOLUME_INFO) < loc->dwTotalSize)
{
const LOCAL_VOLUME_INFO *vol = (const LOCAL_VOLUME_INFO *)&p[loc->dwVolTableOfs];
@ -245,6 +255,19 @@ static int dump_location(void)
}
printf("\n");
/* dump information about the network volume the link points to */
printf("Network volume ofs = %08x ", loc->dwNetworkVolTableOfs);
if (loc->dwNetworkVolTableOfs &&
loc->dwNetworkVolTableOfs + sizeof(NETWORK_VOLUME_INFO) < loc->dwTotalSize)
{
const NETWORK_VOLUME_INFO *vol = (const NETWORK_VOLUME_INFO *)&p[loc->dwNetworkVolTableOfs];
printf("size %d name %d ", vol->dwSize, vol->dwShareNameOfs);
if(vol->dwShareNameOfs)
printf("(\"%s\")", &p[loc->dwNetworkVolTableOfs + vol->dwShareNameOfs]);
}
printf("\n");
/* dump out the path the link points to */
printf("LocalPath ofs = %08x ", loc->dwLocalPathOfs);
if( loc->dwLocalPathOfs && (loc->dwLocalPathOfs < loc->dwTotalSize) )