Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
e2791cdf
Commit
e2791cdf
authored
Apr 29, 2013
by
Dmitry Timoshkov
Committed by
Alexandre Julliard
Apr 29, 2013
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
include: Make IMAGE_RESOURCE_DIRECTORY_ENTRY match PSDK definition.
parent
397c2200
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
81 additions
and
84 deletions
+81
-84
resource.c
dlls/kernel32/resource.c
+31
-31
resource.c
dlls/ntdll/resource.c
+11
-11
exticon.c
dlls/user32/exticon.c
+6
-6
version.c
dlls/ver.dll16/version.c
+6
-6
version.c
dlls/version/version.c
+4
-4
winnt.h
include/winnt.h
+7
-9
loader.c
libs/wine/loader.c
+2
-2
pe.c
tools/winedump/pe.c
+14
-15
No files found.
dlls/kernel32/resource.c
View file @
e2791cdf
...
...
@@ -219,9 +219,9 @@ BOOL WINAPI EnumResourceTypesA( HMODULE hmod, ENUMRESTYPEPROCA lpfun, LONG_PTR l
et
=
(
const
IMAGE_RESOURCE_DIRECTORY_ENTRY
*
)(
resdir
+
1
);
for
(
i
=
0
;
i
<
resdir
->
NumberOfNamedEntries
+
resdir
->
NumberOfIdEntries
;
i
++
)
{
if
(
et
[
i
].
u
1
.
s1
.
NameIsString
)
if
(
et
[
i
].
u
.
s
.
NameIsString
)
{
str
=
(
const
IMAGE_RESOURCE_DIR_STRING_U
*
)((
const
BYTE
*
)
resdir
+
et
[
i
].
u
1
.
s1
.
NameOffset
);
str
=
(
const
IMAGE_RESOURCE_DIR_STRING_U
*
)((
const
BYTE
*
)
resdir
+
et
[
i
].
u
.
s
.
NameOffset
);
newlen
=
WideCharToMultiByte
(
CP_ACP
,
0
,
str
->
NameString
,
str
->
Length
,
NULL
,
0
,
NULL
,
NULL
);
if
(
newlen
+
1
>
len
)
{
...
...
@@ -235,7 +235,7 @@ BOOL WINAPI EnumResourceTypesA( HMODULE hmod, ENUMRESTYPEPROCA lpfun, LONG_PTR l
}
else
{
ret
=
lpfun
(
hmod
,
UIntToPtr
(
et
[
i
].
u
1
.
s2
.
Id
),
lparam
);
ret
=
lpfun
(
hmod
,
UIntToPtr
(
et
[
i
].
u
.
Id
),
lparam
);
}
if
(
!
ret
)
break
;
}
...
...
@@ -269,9 +269,9 @@ BOOL WINAPI EnumResourceTypesW( HMODULE hmod, ENUMRESTYPEPROCW lpfun, LONG_PTR l
et
=
(
const
IMAGE_RESOURCE_DIRECTORY_ENTRY
*
)(
resdir
+
1
);
for
(
i
=
0
;
i
<
resdir
->
NumberOfNamedEntries
+
resdir
->
NumberOfIdEntries
;
i
++
)
{
if
(
et
[
i
].
u
1
.
s1
.
NameIsString
)
if
(
et
[
i
].
u
.
s
.
NameIsString
)
{
str
=
(
const
IMAGE_RESOURCE_DIR_STRING_U
*
)((
const
BYTE
*
)
resdir
+
et
[
i
].
u
1
.
s1
.
NameOffset
);
str
=
(
const
IMAGE_RESOURCE_DIR_STRING_U
*
)((
const
BYTE
*
)
resdir
+
et
[
i
].
u
.
s
.
NameOffset
);
if
(
str
->
Length
+
1
>
len
)
{
len
=
str
->
Length
+
1
;
...
...
@@ -284,7 +284,7 @@ BOOL WINAPI EnumResourceTypesW( HMODULE hmod, ENUMRESTYPEPROCW lpfun, LONG_PTR l
}
else
{
ret
=
lpfun
(
hmod
,
UIntToPtr
(
et
[
i
].
u
1
.
s2
.
Id
),
lparam
);
ret
=
lpfun
(
hmod
,
UIntToPtr
(
et
[
i
].
u
.
Id
),
lparam
);
}
if
(
!
ret
)
break
;
}
...
...
@@ -326,9 +326,9 @@ BOOL WINAPI EnumResourceNamesA( HMODULE hmod, LPCSTR type, ENUMRESNAMEPROCA lpfu
{
for
(
i
=
0
;
i
<
resdir
->
NumberOfNamedEntries
+
resdir
->
NumberOfIdEntries
;
i
++
)
{
if
(
et
[
i
].
u
1
.
s1
.
NameIsString
)
if
(
et
[
i
].
u
.
s
.
NameIsString
)
{
str
=
(
const
IMAGE_RESOURCE_DIR_STRING_U
*
)((
const
BYTE
*
)
basedir
+
et
[
i
].
u
1
.
s1
.
NameOffset
);
str
=
(
const
IMAGE_RESOURCE_DIR_STRING_U
*
)((
const
BYTE
*
)
basedir
+
et
[
i
].
u
.
s
.
NameOffset
);
newlen
=
WideCharToMultiByte
(
CP_ACP
,
0
,
str
->
NameString
,
str
->
Length
,
NULL
,
0
,
NULL
,
NULL
);
if
(
newlen
+
1
>
len
)
{
...
...
@@ -346,7 +346,7 @@ BOOL WINAPI EnumResourceNamesA( HMODULE hmod, LPCSTR type, ENUMRESNAMEPROCA lpfu
}
else
{
ret
=
lpfun
(
hmod
,
type
,
UIntToPtr
(
et
[
i
].
u
1
.
s2
.
Id
),
lparam
);
ret
=
lpfun
(
hmod
,
type
,
UIntToPtr
(
et
[
i
].
u
.
Id
),
lparam
);
}
if
(
!
ret
)
break
;
}
...
...
@@ -398,9 +398,9 @@ BOOL WINAPI EnumResourceNamesW( HMODULE hmod, LPCWSTR type, ENUMRESNAMEPROCW lpf
{
for
(
i
=
0
;
i
<
resdir
->
NumberOfNamedEntries
+
resdir
->
NumberOfIdEntries
;
i
++
)
{
if
(
et
[
i
].
u
1
.
s1
.
NameIsString
)
if
(
et
[
i
].
u
.
s
.
NameIsString
)
{
str
=
(
const
IMAGE_RESOURCE_DIR_STRING_U
*
)((
const
BYTE
*
)
basedir
+
et
[
i
].
u
1
.
s1
.
NameOffset
);
str
=
(
const
IMAGE_RESOURCE_DIR_STRING_U
*
)((
const
BYTE
*
)
basedir
+
et
[
i
].
u
.
s
.
NameOffset
);
if
(
str
->
Length
+
1
>
len
)
{
len
=
str
->
Length
+
1
;
...
...
@@ -417,7 +417,7 @@ BOOL WINAPI EnumResourceNamesW( HMODULE hmod, LPCWSTR type, ENUMRESNAMEPROCW lpf
}
else
{
ret
=
lpfun
(
hmod
,
type
,
UIntToPtr
(
et
[
i
].
u
1
.
s2
.
Id
),
lparam
);
ret
=
lpfun
(
hmod
,
type
,
UIntToPtr
(
et
[
i
].
u
.
Id
),
lparam
);
}
if
(
!
ret
)
break
;
}
...
...
@@ -470,7 +470,7 @@ BOOL WINAPI EnumResourceLanguagesA( HMODULE hmod, LPCSTR type, LPCSTR name,
{
for
(
i
=
0
;
i
<
resdir
->
NumberOfNamedEntries
+
resdir
->
NumberOfIdEntries
;
i
++
)
{
ret
=
lpfun
(
hmod
,
type
,
name
,
et
[
i
].
u
1
.
s2
.
Id
,
lparam
);
ret
=
lpfun
(
hmod
,
type
,
name
,
et
[
i
].
u
.
Id
,
lparam
);
if
(
!
ret
)
break
;
}
}
...
...
@@ -522,7 +522,7 @@ BOOL WINAPI EnumResourceLanguagesW( HMODULE hmod, LPCWSTR type, LPCWSTR name,
{
for
(
i
=
0
;
i
<
resdir
->
NumberOfNamedEntries
+
resdir
->
NumberOfIdEntries
;
i
++
)
{
ret
=
lpfun
(
hmod
,
type
,
name
,
et
[
i
].
u
1
.
s2
.
Id
,
lparam
);
ret
=
lpfun
(
hmod
,
type
,
name
,
et
[
i
].
u
.
Id
,
lparam
);
if
(
!
ret
)
break
;
}
}
...
...
@@ -948,10 +948,10 @@ static LPWSTR resource_dup_string( const IMAGE_RESOURCE_DIRECTORY *root, const I
const
IMAGE_RESOURCE_DIR_STRING_U
*
string
;
LPWSTR
s
;
if
(
!
entry
->
u
1
.
s1
.
NameIsString
)
return
UIntToPtr
(
entry
->
u
1
.
s2
.
Id
);
if
(
!
entry
->
u
.
s
.
NameIsString
)
return
UIntToPtr
(
entry
->
u
.
Id
);
string
=
(
const
IMAGE_RESOURCE_DIR_STRING_U
*
)
(((
const
char
*
)
root
)
+
entry
->
u
1
.
s1
.
NameOffset
);
string
=
(
const
IMAGE_RESOURCE_DIR_STRING_U
*
)
(((
const
char
*
)
root
)
+
entry
->
u
.
s
.
NameOffset
);
s
=
HeapAlloc
(
GetProcessHeap
(),
0
,
(
string
->
Length
+
1
)
*
sizeof
(
WCHAR
)
);
memcpy
(
s
,
string
->
NameString
,
(
string
->
Length
+
1
)
*
sizeof
(
WCHAR
)
);
s
[
string
->
Length
]
=
0
;
...
...
@@ -980,7 +980,7 @@ static BOOL enumerate_mapped_resources( QUEUEDUPDATES *updates,
Type
=
resource_dup_string
(
root
,
e1
);
namedir
=
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
e1
->
u2
.
s
3
.
OffsetToDirectory
);
namedir
=
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
e1
->
u2
.
s
2
.
OffsetToDirectory
);
for
(
j
=
0
;
j
<
namedir
->
NumberOfNamedEntries
+
namedir
->
NumberOfIdEntries
;
j
++
)
{
LPWSTR
Name
;
...
...
@@ -989,7 +989,7 @@ static BOOL enumerate_mapped_resources( QUEUEDUPDATES *updates,
Name
=
resource_dup_string
(
root
,
e2
);
langdir
=
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
e2
->
u2
.
s
3
.
OffsetToDirectory
);
langdir
=
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
e2
->
u2
.
s
2
.
OffsetToDirectory
);
for
(
k
=
0
;
k
<
langdir
->
NumberOfNamedEntries
+
langdir
->
NumberOfIdEntries
;
k
++
)
{
LANGID
Lang
;
...
...
@@ -998,7 +998,7 @@ static BOOL enumerate_mapped_resources( QUEUEDUPDATES *updates,
e3
=
(
const
IMAGE_RESOURCE_DIRECTORY_ENTRY
*
)(
langdir
+
1
)
+
k
;
Lang
=
e3
->
u
1
.
s2
.
Id
;
Lang
=
e3
->
u
.
Id
;
data
=
(
const
IMAGE_RESOURCE_DATA_ENTRY
*
)((
const
char
*
)
root
+
e3
->
u2
.
OffsetToData
);
...
...
@@ -1235,8 +1235,8 @@ static BOOL write_resources( QUEUEDUPDATES *updates, LPBYTE base, struct resourc
DWORD
len
;
root
->
NumberOfNamedEntries
++
;
e1
->
u
1
.
s1
.
NameIsString
=
1
;
e1
->
u
1
.
s1
.
NameOffset
=
si
->
strings_ofs
;
e1
->
u
.
s
.
NameIsString
=
1
;
e1
->
u
.
s
.
NameOffset
=
si
->
strings_ofs
;
strings
=
(
WCHAR
*
)
&
base
[
si
->
strings_ofs
];
len
=
lstrlenW
(
types
->
id
);
...
...
@@ -1247,10 +1247,10 @@ static BOOL write_resources( QUEUEDUPDATES *updates, LPBYTE base, struct resourc
else
{
root
->
NumberOfIdEntries
++
;
e1
->
u
1
.
s2
.
Id
=
LOWORD
(
types
->
id
);
e1
->
u
.
Id
=
LOWORD
(
types
->
id
);
}
e1
->
u2
.
s
3
.
OffsetToDirectory
=
si
->
names_ofs
;
e1
->
u2
.
s
3
.
DataIsDirectory
=
TRUE
;
e1
->
u2
.
s
2
.
OffsetToDirectory
=
si
->
names_ofs
;
e1
->
u2
.
s
2
.
DataIsDirectory
=
TRUE
;
si
->
types_ofs
+=
sizeof
(
IMAGE_RESOURCE_DIRECTORY_ENTRY
);
namedir
=
(
IMAGE_RESOURCE_DIRECTORY
*
)
&
base
[
si
->
names_ofs
];
...
...
@@ -1271,8 +1271,8 @@ static BOOL write_resources( QUEUEDUPDATES *updates, LPBYTE base, struct resourc
DWORD
len
;
namedir
->
NumberOfNamedEntries
++
;
e2
->
u
1
.
s1
.
NameIsString
=
1
;
e2
->
u
1
.
s1
.
NameOffset
=
si
->
strings_ofs
;
e2
->
u
.
s
.
NameIsString
=
1
;
e2
->
u
.
s
.
NameOffset
=
si
->
strings_ofs
;
strings
=
(
WCHAR
*
)
&
base
[
si
->
strings_ofs
];
len
=
lstrlenW
(
names
->
id
);
...
...
@@ -1283,10 +1283,10 @@ static BOOL write_resources( QUEUEDUPDATES *updates, LPBYTE base, struct resourc
else
{
namedir
->
NumberOfIdEntries
++
;
e2
->
u
1
.
s2
.
Id
=
LOWORD
(
names
->
id
);
e2
->
u
.
Id
=
LOWORD
(
names
->
id
);
}
e2
->
u2
.
s
3
.
OffsetToDirectory
=
si
->
langs_ofs
;
e2
->
u2
.
s
3
.
DataIsDirectory
=
TRUE
;
e2
->
u2
.
s
2
.
OffsetToDirectory
=
si
->
langs_ofs
;
e2
->
u2
.
s
2
.
DataIsDirectory
=
TRUE
;
si
->
names_ofs
+=
sizeof
(
IMAGE_RESOURCE_DIRECTORY_ENTRY
);
langdir
=
(
IMAGE_RESOURCE_DIRECTORY
*
)
&
base
[
si
->
langs_ofs
];
...
...
@@ -1303,7 +1303,7 @@ static BOOL write_resources( QUEUEDUPDATES *updates, LPBYTE base, struct resourc
e3
=
(
IMAGE_RESOURCE_DIRECTORY_ENTRY
*
)
&
base
[
si
->
langs_ofs
];
memset
(
e3
,
0
,
sizeof
*
e3
);
langdir
->
NumberOfIdEntries
++
;
e3
->
u
1
.
s2
.
Id
=
LOWORD
(
data
->
lang
);
e3
->
u
.
Id
=
LOWORD
(
data
->
lang
);
e3
->
u2
.
OffsetToData
=
si
->
data_entry_ofs
;
si
->
langs_ofs
+=
sizeof
(
IMAGE_RESOURCE_DIRECTORY_ENTRY
);
...
...
dlls/ntdll/resource.c
View file @
e2791cdf
...
...
@@ -89,8 +89,8 @@ static const IMAGE_RESOURCE_DIRECTORY *find_first_entry( const IMAGE_RESOURCE_DI
for
(
pos
=
0
;
pos
<
dir
->
NumberOfNamedEntries
+
dir
->
NumberOfIdEntries
;
pos
++
)
{
if
(
!
entry
[
pos
].
u2
.
s
3
.
DataIsDirectory
==
!
want_dir
)
return
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
entry
[
pos
].
u2
.
s
3
.
OffsetToDirectory
);
if
(
!
entry
[
pos
].
u2
.
s
2
.
DataIsDirectory
==
!
want_dir
)
return
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
entry
[
pos
].
u2
.
s
2
.
OffsetToDirectory
);
}
return
NULL
;
}
...
...
@@ -113,17 +113,17 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_by_id( const IMAGE_RESOURCE_DI
while
(
min
<=
max
)
{
pos
=
(
min
+
max
)
/
2
;
if
(
entry
[
pos
].
u
1
.
s2
.
Id
==
id
)
if
(
entry
[
pos
].
u
.
Id
==
id
)
{
if
(
!
entry
[
pos
].
u2
.
s
3
.
DataIsDirectory
==
!
want_dir
)
if
(
!
entry
[
pos
].
u2
.
s
2
.
DataIsDirectory
==
!
want_dir
)
{
TRACE
(
"root %p dir %p id %04x ret %p
\n
"
,
root
,
dir
,
id
,
(
const
char
*
)
root
+
entry
[
pos
].
u2
.
s
3
.
OffsetToDirectory
);
return
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
entry
[
pos
].
u2
.
s
3
.
OffsetToDirectory
);
root
,
dir
,
id
,
(
const
char
*
)
root
+
entry
[
pos
].
u2
.
s
2
.
OffsetToDirectory
);
return
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
entry
[
pos
].
u2
.
s
2
.
OffsetToDirectory
);
}
break
;
}
if
(
entry
[
pos
].
u
1
.
s2
.
Id
>
id
)
max
=
pos
-
1
;
if
(
entry
[
pos
].
u
.
Id
>
id
)
max
=
pos
-
1
;
else
min
=
pos
+
1
;
}
TRACE
(
"root %p dir %p id %04x not found
\n
"
,
root
,
dir
,
id
);
...
...
@@ -152,15 +152,15 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_by_name( const IMAGE_RESOURCE_
while
(
min
<=
max
)
{
pos
=
(
min
+
max
)
/
2
;
str
=
(
const
IMAGE_RESOURCE_DIR_STRING_U
*
)((
const
char
*
)
root
+
entry
[
pos
].
u
1
.
s1
.
NameOffset
);
str
=
(
const
IMAGE_RESOURCE_DIR_STRING_U
*
)((
const
char
*
)
root
+
entry
[
pos
].
u
.
s
.
NameOffset
);
res
=
strncmpW
(
name
,
str
->
NameString
,
str
->
Length
);
if
(
!
res
&&
namelen
==
str
->
Length
)
{
if
(
!
entry
[
pos
].
u2
.
s
3
.
DataIsDirectory
==
!
want_dir
)
if
(
!
entry
[
pos
].
u2
.
s
2
.
DataIsDirectory
==
!
want_dir
)
{
TRACE
(
"root %p dir %p name %s ret %p
\n
"
,
root
,
dir
,
debugstr_w
(
name
),
(
const
char
*
)
root
+
entry
[
pos
].
u2
.
s
3
.
OffsetToDirectory
);
return
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
entry
[
pos
].
u2
.
s
3
.
OffsetToDirectory
);
root
,
dir
,
debugstr_w
(
name
),
(
const
char
*
)
root
+
entry
[
pos
].
u2
.
s
2
.
OffsetToDirectory
);
return
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
entry
[
pos
].
u2
.
s
2
.
OffsetToDirectory
);
}
break
;
}
...
...
dlls/user32/exticon.c
View file @
e2791cdf
...
...
@@ -120,9 +120,9 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_by_id( const IMAGE_RESOURCE_DI
while
(
min
<=
max
)
{
pos
=
(
min
+
max
)
/
2
;
if
(
entry
[
pos
].
u
1
.
s2
.
Id
==
id
)
return
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
entry
[
pos
].
u2
.
s
3
.
OffsetToDirectory
);
if
(
entry
[
pos
].
u
1
.
s2
.
Id
>
id
)
max
=
pos
-
1
;
if
(
entry
[
pos
].
u
.
Id
==
id
)
return
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
entry
[
pos
].
u2
.
s
2
.
OffsetToDirectory
);
if
(
entry
[
pos
].
u
.
Id
>
id
)
max
=
pos
-
1
;
else
min
=
pos
+
1
;
}
return
NULL
;
...
...
@@ -139,7 +139,7 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_default( const IMAGE_RESOURCE_
{
const
IMAGE_RESOURCE_DIRECTORY_ENTRY
*
entry
;
entry
=
(
const
IMAGE_RESOURCE_DIRECTORY_ENTRY
*
)(
dir
+
1
);
return
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
entry
->
u2
.
s
3
.
OffsetToDirectory
);
return
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
entry
->
u2
.
s
2
.
OffsetToDirectory
);
}
/*************************************************************************
...
...
@@ -486,7 +486,7 @@ static UINT ICO_ExtractIconExW(
while
(
n
<
iconDirCount
&&
xprdeTmp
)
{
if
(
xprdeTmp
->
u
1
.
s2
.
Id
==
iId
)
if
(
xprdeTmp
->
u
.
Id
==
iId
)
{
nIconIndex
=
n
;
break
;
...
...
@@ -522,7 +522,7 @@ static UINT ICO_ExtractIconExW(
const
IMAGE_RESOURCE_DIRECTORY
*
resdir
;
/* go down this resource entry, name */
resdir
=
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
rootresdir
+
xresent
->
u2
.
s
3
.
OffsetToDirectory
);
resdir
=
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
rootresdir
+
xresent
->
u2
.
s
2
.
OffsetToDirectory
);
/* default language (0) */
resdir
=
find_entry_default
(
resdir
,
rootresdir
);
...
...
dlls/ver.dll16/version.c
View file @
e2791cdf
...
...
@@ -60,9 +60,9 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_by_id( const IMAGE_RESOURCE_DI
while
(
min
<=
max
)
{
pos
=
(
min
+
max
)
/
2
;
if
(
entry
[
pos
].
u
1
.
s2
.
Id
==
id
)
return
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
entry
[
pos
].
u2
.
s
3
.
OffsetToDirectory
);
if
(
entry
[
pos
].
u
1
.
s2
.
Id
>
id
)
max
=
pos
-
1
;
if
(
entry
[
pos
].
u
.
Id
==
id
)
return
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
entry
[
pos
].
u2
.
s
2
.
OffsetToDirectory
);
if
(
entry
[
pos
].
u
.
Id
>
id
)
max
=
pos
-
1
;
else
min
=
pos
+
1
;
}
return
NULL
;
...
...
@@ -81,7 +81,7 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_default( const IMAGE_RESOURCE_
const
IMAGE_RESOURCE_DIRECTORY_ENTRY
*
entry
;
entry
=
(
const
IMAGE_RESOURCE_DIRECTORY_ENTRY
*
)(
dir
+
1
);
return
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
entry
->
u2
.
s
3
.
OffsetToDirectory
);
return
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
entry
->
u2
.
s
2
.
OffsetToDirectory
);
}
...
...
@@ -119,11 +119,11 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_by_name( const IMAGE_RESOURCE_
while
(
min
<=
max
)
{
pos
=
(
min
+
max
)
/
2
;
str
=
(
const
IMAGE_RESOURCE_DIR_STRING_U
*
)((
const
char
*
)
root
+
entry
[
pos
].
u
1
.
s1
.
NameOffset
);
str
=
(
const
IMAGE_RESOURCE_DIR_STRING_U
*
)((
const
char
*
)
root
+
entry
[
pos
].
u
.
s
.
NameOffset
);
res
=
strncmpiW
(
nameW
,
str
->
NameString
,
str
->
Length
);
if
(
!
res
&&
namelen
==
str
->
Length
)
{
ret
=
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
entry
[
pos
].
u2
.
s
3
.
OffsetToDirectory
);
ret
=
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
entry
[
pos
].
u2
.
s
2
.
OffsetToDirectory
);
break
;
}
if
(
res
<
0
)
max
=
pos
-
1
;
...
...
dlls/version/version.c
View file @
e2791cdf
...
...
@@ -84,9 +84,9 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_by_id( const IMAGE_RESOURCE_DI
while
(
min
<=
max
)
{
pos
=
(
min
+
max
)
/
2
;
if
(
entry
[
pos
].
u
1
.
s2
.
Id
==
id
)
return
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
entry
[
pos
].
u2
.
s
3
.
OffsetToDirectory
);
if
(
entry
[
pos
].
u
1
.
s2
.
Id
>
id
)
max
=
pos
-
1
;
if
(
entry
[
pos
].
u
.
Id
==
id
)
return
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
entry
[
pos
].
u2
.
s
2
.
OffsetToDirectory
);
if
(
entry
[
pos
].
u
.
Id
>
id
)
max
=
pos
-
1
;
else
min
=
pos
+
1
;
}
return
NULL
;
...
...
@@ -105,7 +105,7 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_default( const IMAGE_RESOURCE_
const
IMAGE_RESOURCE_DIRECTORY_ENTRY
*
entry
;
entry
=
(
const
IMAGE_RESOURCE_DIRECTORY_ENTRY
*
)(
dir
+
1
);
return
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
entry
->
u2
.
s
3
.
OffsetToDirectory
);
return
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
entry
->
u2
.
s
2
.
OffsetToDirectory
);
}
...
...
include/winnt.h
View file @
e2791cdf
...
...
@@ -3343,18 +3343,16 @@ typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
unsigned
NameOffset
:
31
;
unsigned
NameIsString
:
1
;
#endif
}
DUMMYSTRUCTNAME
1
;
}
DUMMYSTRUCTNAME
;
DWORD
Name
;
struct
{
#ifdef WORDS_BIGENDIAN
WORD
__pad
;
WORD
Id
;
WORD
__pad
;
WORD
Id
;
#else
WORD
Id
;
WORD
__pad
;
WORD
Id
;
WORD
__pad
;
#endif
}
DUMMYSTRUCTNAME2
;
}
DUMMYUNIONNAME1
;
}
DUMMYUNIONNAME
;
union
{
DWORD
OffsetToData
;
struct
{
...
...
@@ -3365,7 +3363,7 @@ typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
unsigned
OffsetToDirectory
:
31
;
unsigned
DataIsDirectory
:
1
;
#endif
}
DUMMYSTRUCTNAME
3
;
}
DUMMYSTRUCTNAME
2
;
}
DUMMYUNIONNAME2
;
}
IMAGE_RESOURCE_DIRECTORY_ENTRY
,
*
PIMAGE_RESOURCE_DIRECTORY_ENTRY
;
...
...
libs/wine/loader.c
View file @
e2791cdf
...
...
@@ -359,8 +359,8 @@ static void fixup_resources( IMAGE_RESOURCE_DIRECTORY *dir, BYTE *root, int delt
entry
=
(
IMAGE_RESOURCE_DIRECTORY_ENTRY
*
)(
dir
+
1
);
for
(
i
=
0
;
i
<
dir
->
NumberOfNamedEntries
+
dir
->
NumberOfIdEntries
;
i
++
,
entry
++
)
{
void
*
ptr
=
root
+
entry
->
u2
.
s
3
.
OffsetToDirectory
;
if
(
entry
->
u2
.
s
3
.
DataIsDirectory
)
fixup_resources
(
ptr
,
root
,
delta
);
void
*
ptr
=
root
+
entry
->
u2
.
s
2
.
OffsetToDirectory
;
if
(
entry
->
u2
.
s
2
.
DataIsDirectory
)
fixup_resources
(
ptr
,
root
,
delta
);
else
{
IMAGE_RESOURCE_DATA_ENTRY
*
data
=
ptr
;
...
...
tools/winedump/pe.c
View file @
e2791cdf
...
...
@@ -1384,52 +1384,51 @@ static void dump_dir_resource(void)
for
(
i
=
0
;
i
<
root
->
NumberOfNamedEntries
+
root
->
NumberOfIdEntries
;
i
++
)
{
e1
=
(
const
IMAGE_RESOURCE_DIRECTORY_ENTRY
*
)(
root
+
1
)
+
i
;
namedir
=
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
e1
->
u2
.
s
3
.
OffsetToDirectory
);
namedir
=
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
e1
->
u2
.
s
2
.
OffsetToDirectory
);
for
(
j
=
0
;
j
<
namedir
->
NumberOfNamedEntries
+
namedir
->
NumberOfIdEntries
;
j
++
)
{
e2
=
(
const
IMAGE_RESOURCE_DIRECTORY_ENTRY
*
)(
namedir
+
1
)
+
j
;
langdir
=
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
e2
->
u2
.
s
3
.
OffsetToDirectory
);
langdir
=
(
const
IMAGE_RESOURCE_DIRECTORY
*
)((
const
char
*
)
root
+
e2
->
u2
.
s
2
.
OffsetToDirectory
);
for
(
k
=
0
;
k
<
langdir
->
NumberOfNamedEntries
+
langdir
->
NumberOfIdEntries
;
k
++
)
{
e3
=
(
const
IMAGE_RESOURCE_DIRECTORY_ENTRY
*
)(
langdir
+
1
)
+
k
;
printf
(
"
\n
"
);
if
(
e1
->
u
1
.
s1
.
NameIsString
)
if
(
e1
->
u
.
s
.
NameIsString
)
{
string
=
(
const
IMAGE_RESOURCE_DIR_STRING_U
*
)((
const
char
*
)
root
+
e1
->
u
1
.
s1
.
NameOffset
);
string
=
(
const
IMAGE_RESOURCE_DIR_STRING_U
*
)((
const
char
*
)
root
+
e1
->
u
.
s
.
NameOffset
);
dump_unicode_str
(
string
->
NameString
,
string
->
Length
);
}
else
{
const
char
*
type
=
get_resource_type
(
e1
->
u
1
.
s2
.
Id
);
const
char
*
type
=
get_resource_type
(
e1
->
u
.
Id
);
if
(
type
)
printf
(
"%s"
,
type
);
else
printf
(
"%04x"
,
e1
->
u
1
.
s2
.
Id
);
else
printf
(
"%04x"
,
e1
->
u
.
Id
);
}
printf
(
" Name="
);
if
(
e2
->
u
1
.
s1
.
NameIsString
)
if
(
e2
->
u
.
s
.
NameIsString
)
{
string
=
(
const
IMAGE_RESOURCE_DIR_STRING_U
*
)
((
const
char
*
)
root
+
e2
->
u
1
.
s1
.
NameOffset
);
string
=
(
const
IMAGE_RESOURCE_DIR_STRING_U
*
)
((
const
char
*
)
root
+
e2
->
u
.
s
.
NameOffset
);
dump_unicode_str
(
string
->
NameString
,
string
->
Length
);
}
else
printf
(
"%04x"
,
e2
->
u
1
.
s2
.
Id
);
printf
(
"%04x"
,
e2
->
u
.
Id
);
printf
(
" Language=%04x:
\n
"
,
e3
->
u
1
.
s2
.
Id
);
printf
(
" Language=%04x:
\n
"
,
e3
->
u
.
Id
);
data
=
(
const
IMAGE_RESOURCE_DATA_ENTRY
*
)((
const
char
*
)
root
+
e3
->
u2
.
OffsetToData
);
if
(
e1
->
u
1
.
s1
.
NameIsString
)
if
(
e1
->
u
.
s
.
NameIsString
)
{
dump_data
(
RVA
(
data
->
OffsetToData
,
data
->
Size
),
data
->
Size
,
" "
);
}
else
switch
(
e1
->
u
1
.
s2
.
Id
)
else
switch
(
e1
->
u
.
Id
)
{
case
6
:
dump_string_data
(
RVA
(
data
->
OffsetToData
,
data
->
Size
),
data
->
Size
,
e2
->
u1
.
s2
.
Id
,
" "
);
dump_string_data
(
RVA
(
data
->
OffsetToData
,
data
->
Size
),
data
->
Size
,
e2
->
u
.
Id
,
" "
);
break
;
case
11
:
dump_msgtable_data
(
RVA
(
data
->
OffsetToData
,
data
->
Size
),
data
->
Size
,
e2
->
u
1
.
s2
.
Id
,
" "
);
e2
->
u
.
Id
,
" "
);
break
;
default:
dump_data
(
RVA
(
data
->
OffsetToData
,
data
->
Size
),
data
->
Size
,
" "
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment