Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
767631d8
Commit
767631d8
authored
May 26, 2006
by
Robert Shearman
Committed by
Alexandre Julliard
May 27, 2006
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
rpcrt4: Implement remaining part of NdrFullPointerQueryPointer and implement…
rpcrt4: Implement remaining part of NdrFullPointerQueryPointer and implement NdrFullPointerInsertRefId.
parent
eb0fe9e6
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
31 additions
and
12 deletions
+31
-12
ndr_fullpointer.c
dlls/rpcrt4/ndr_fullpointer.c
+30
-5
ndr_marshall.c
dlls/rpcrt4/tests/ndr_marshall.c
+1
-7
No files found.
dlls/rpcrt4/ndr_fullpointer.c
View file @
767631d8
...
@@ -108,8 +108,6 @@ int WINAPI NdrFullPointerQueryPointer(PFULL_PTR_XLAT_TABLES pXlatTables,
...
@@ -108,8 +108,6 @@ int WINAPI NdrFullPointerQueryPointer(PFULL_PTR_XLAT_TABLES pXlatTables,
for
(
i
=
0
;
i
<
sizeof
(
pPointer
);
i
++
)
for
(
i
=
0
;
i
<
sizeof
(
pPointer
);
i
++
)
Hash
=
(
Hash
*
3
)
^
((
unsigned
char
*
)
&
pPointer
)[
i
];
Hash
=
(
Hash
*
3
)
^
((
unsigned
char
*
)
&
pPointer
)[
i
];
TRACE
(
"pXlatTables->PointerToRefId.XlatTable = %p
\n
"
,
pXlatTables
->
PointerToRefId
.
XlatTable
);
TRACE
(
"Hash = 0x%lx, pXlatTables->PointerToRefId.HashMask = 0x%lx
\n
"
,
Hash
,
pXlatTables
->
PointerToRefId
.
HashMask
);
XlatTableEntry
=
pXlatTables
->
PointerToRefId
.
XlatTable
[
Hash
&
pXlatTables
->
PointerToRefId
.
HashMask
];
XlatTableEntry
=
pXlatTables
->
PointerToRefId
.
XlatTable
[
Hash
&
pXlatTables
->
PointerToRefId
.
HashMask
];
for
(;
XlatTableEntry
;
XlatTableEntry
=
XlatTableEntry
->
Next
)
for
(;
XlatTableEntry
;
XlatTableEntry
=
XlatTableEntry
->
Next
)
if
(
pPointer
==
XlatTableEntry
->
Pointer
)
if
(
pPointer
==
XlatTableEntry
->
Pointer
)
...
@@ -128,7 +126,13 @@ int WINAPI NdrFullPointerQueryPointer(PFULL_PTR_XLAT_TABLES pXlatTables,
...
@@ -128,7 +126,13 @@ int WINAPI NdrFullPointerQueryPointer(PFULL_PTR_XLAT_TABLES pXlatTables,
XlatTableEntry
->
State
=
QueryType
;
XlatTableEntry
->
State
=
QueryType
;
pXlatTables
->
PointerToRefId
.
XlatTable
[
Hash
&
pXlatTables
->
PointerToRefId
.
HashMask
]
=
XlatTableEntry
;
pXlatTables
->
PointerToRefId
.
XlatTable
[
Hash
&
pXlatTables
->
PointerToRefId
.
HashMask
]
=
XlatTableEntry
;
/* FIXME: insert pointer into mapping table */
/* insert pointer into mapping table */
expand_pointer_table_if_necessary
(
pXlatTables
,
XlatTableEntry
->
RefId
);
if
(
pXlatTables
->
RefIdToPointer
.
NumberOfEntries
>
XlatTableEntry
->
RefId
)
{
pXlatTables
->
RefIdToPointer
.
XlatTable
[
XlatTableEntry
->
RefId
]
=
pPointer
;
pXlatTables
->
RefIdToPointer
.
StateTable
[
XlatTableEntry
->
RefId
]
=
QueryType
;
}
return
0
;
return
0
;
}
}
...
@@ -141,14 +145,35 @@ int WINAPI NdrFullPointerQueryRefId(PFULL_PTR_XLAT_TABLES pXlatTables,
...
@@ -141,14 +145,35 @@ int WINAPI NdrFullPointerQueryRefId(PFULL_PTR_XLAT_TABLES pXlatTables,
expand_pointer_table_if_necessary
(
pXlatTables
,
RefId
);
expand_pointer_table_if_necessary
(
pXlatTables
,
RefId
);
*
ppPointer
=
pXlatTables
->
RefIdToPointer
.
XlatTable
[
RefId
];
if
(
pXlatTables
->
RefIdToPointer
.
NumberOfEntries
>
RefId
)
*
ppPointer
=
pXlatTables
->
RefIdToPointer
.
XlatTable
[
RefId
];
return
0
;
return
0
;
}
}
void
WINAPI
NdrFullPointerInsertRefId
(
PFULL_PTR_XLAT_TABLES
pXlatTables
,
void
WINAPI
NdrFullPointerInsertRefId
(
PFULL_PTR_XLAT_TABLES
pXlatTables
,
unsigned
long
RefId
,
void
*
pPointer
)
unsigned
long
RefId
,
void
*
pPointer
)
{
{
FIXME
(
"(%p, 0x%lx, %p)
\n
"
,
pXlatTables
,
RefId
,
pPointer
);
unsigned
long
Hash
=
0
;
int
i
;
PFULL_PTR_TO_REFID_ELEMENT
XlatTableEntry
;
TRACE
(
"(%p, 0x%lx, %p)
\n
"
,
pXlatTables
,
RefId
,
pPointer
);
/* simple hashing algorithm, don't know whether it matches native */
for
(
i
=
0
;
i
<
sizeof
(
pPointer
);
i
++
)
Hash
=
(
Hash
*
3
)
^
((
unsigned
char
*
)
&
pPointer
)[
i
];
XlatTableEntry
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
*
XlatTableEntry
));
XlatTableEntry
->
Next
=
pXlatTables
->
PointerToRefId
.
XlatTable
[
Hash
&
pXlatTables
->
PointerToRefId
.
HashMask
];
XlatTableEntry
->
Pointer
=
pPointer
;
XlatTableEntry
->
RefId
=
RefId
;
XlatTableEntry
->
State
=
0
;
pXlatTables
->
PointerToRefId
.
XlatTable
[
Hash
&
pXlatTables
->
PointerToRefId
.
HashMask
]
=
XlatTableEntry
;
/* insert pointer into mapping table */
expand_pointer_table_if_necessary
(
pXlatTables
,
RefId
);
if
(
pXlatTables
->
RefIdToPointer
.
NumberOfEntries
>
RefId
)
pXlatTables
->
RefIdToPointer
.
XlatTable
[
XlatTableEntry
->
RefId
]
=
pPointer
;
}
}
int
WINAPI
NdrFullPointerFree
(
PFULL_PTR_XLAT_TABLES
pXlatTables
,
void
*
Pointer
)
int
WINAPI
NdrFullPointerFree
(
PFULL_PTR_XLAT_TABLES
pXlatTables
,
void
*
Pointer
)
...
...
dlls/rpcrt4/tests/ndr_marshall.c
View file @
767631d8
...
@@ -724,9 +724,7 @@ static void test_fullpointer_xlat(void)
...
@@ -724,9 +724,7 @@ static void test_fullpointer_xlat(void)
ret
=
NdrFullPointerQueryRefId
(
pXlatTables
,
0x2
,
0
,
&
Pointer
);
ret
=
NdrFullPointerQueryRefId
(
pXlatTables
,
0x2
,
0
,
&
Pointer
);
ok
(
ret
==
0
,
"ret should be 0 instead of 0x%x
\n
"
,
ret
);
ok
(
ret
==
0
,
"ret should be 0 instead of 0x%x
\n
"
,
ret
);
todo_wine
{
ok
(
Pointer
==
(
void
*
)
0xcafebabe
,
"Pointer should be 0xcafebabe instead of %p
\n
"
,
Pointer
);
ok
(
Pointer
==
(
void
*
)
0xcafebabe
,
"Pointer should be 0xcafebabe instead of %p
\n
"
,
Pointer
);
}
ret
=
NdrFullPointerQueryRefId
(
pXlatTables
,
0x4
,
0
,
&
Pointer
);
ret
=
NdrFullPointerQueryRefId
(
pXlatTables
,
0x4
,
0
,
&
Pointer
);
ok
(
ret
==
0
,
"ret should be 0 instead of 0x%x
\n
"
,
ret
);
ok
(
ret
==
0
,
"ret should be 0 instead of 0x%x
\n
"
,
ret
);
...
@@ -736,9 +734,7 @@ static void test_fullpointer_xlat(void)
...
@@ -736,9 +734,7 @@ static void test_fullpointer_xlat(void)
ret
=
NdrFullPointerQueryRefId
(
pXlatTables
,
0x4
,
1
,
&
Pointer
);
ret
=
NdrFullPointerQueryRefId
(
pXlatTables
,
0x4
,
1
,
&
Pointer
);
ok
(
ret
==
0
,
"ret should be 0 instead of 0x%x
\n
"
,
ret
);
ok
(
ret
==
0
,
"ret should be 0 instead of 0x%x
\n
"
,
ret
);
todo_wine
{
ok
(
Pointer
==
(
void
*
)
0xdeadbabe
,
"Pointer should be (void *)0xdeadbabe instead of %p
\n
"
,
Pointer
);
ok
(
Pointer
==
(
void
*
)
0xdeadbabe
,
"Pointer should be (void *)0xdeadbabe instead of %p
\n
"
,
Pointer
);
}
NdrFullPointerXlatFree
(
pXlatTables
);
NdrFullPointerXlatFree
(
pXlatTables
);
...
@@ -754,15 +750,13 @@ static void test_fullpointer_xlat(void)
...
@@ -754,15 +750,13 @@ static void test_fullpointer_xlat(void)
ret
=
NdrFullPointerQueryRefId
(
pXlatTables
,
0x2
,
0
,
&
Pointer
);
ret
=
NdrFullPointerQueryRefId
(
pXlatTables
,
0x2
,
0
,
&
Pointer
);
ok
(
ret
==
0
,
"ret should be 0 instead of 0x%x
\n
"
,
ret
);
ok
(
ret
==
0
,
"ret should be 0 instead of 0x%x
\n
"
,
ret
);
todo_wine
{
ok
(
Pointer
==
(
void
*
)
0xcafebabe
,
"Pointer should be (void *)0xcafebabe instead of %p
\n
"
,
Pointer
);
ok
(
Pointer
==
(
void
*
)
0xcafebabe
,
"Pointer should be (void *)0xcafebabe instead of %p
\n
"
,
Pointer
);
}
ret
=
NdrFullPointerQueryRefId
(
pXlatTables
,
0x2
,
1
,
&
Pointer
);
ret
=
NdrFullPointerQueryRefId
(
pXlatTables
,
0x2
,
1
,
&
Pointer
);
todo_wine
{
todo_wine
{
ok
(
ret
==
1
,
"ret should be 1 instead of 0x%x
\n
"
,
ret
);
ok
(
ret
==
1
,
"ret should be 1 instead of 0x%x
\n
"
,
ret
);
ok
(
Pointer
==
(
void
*
)
0xcafebabe
,
"Pointer should be (void *)0xcafebabe instead of %p
\n
"
,
Pointer
);
}
}
ok
(
Pointer
==
(
void
*
)
0xcafebabe
,
"Pointer should be (void *)0xcafebabe instead of %p
\n
"
,
Pointer
);
/* "marshaling" phase */
/* "marshaling" phase */
...
...
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