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
2d1a7173
Commit
2d1a7173
authored
Oct 26, 2009
by
Owen Rudge
Committed by
Alexandre Julliard
Oct 27, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mapi32: Pass several extended MAPI functions through to provider.
parent
d6bc1f5e
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
74 additions
and
3 deletions
+74
-3
imalloc.c
dlls/mapi32/imalloc.c
+4
-0
mapi32_main.c
dlls/mapi32/mapi32_main.c
+15
-1
util.c
dlls/mapi32/util.c
+41
-1
util.h
dlls/mapi32/util.h
+14
-1
No files found.
dlls/mapi32/imalloc.c
View file @
2d1a7173
...
...
@@ -32,6 +32,7 @@
#include "objbase.h"
#include "shlwapi.h"
#include "mapiutil.h"
#include "util.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
mapi
);
...
...
@@ -63,6 +64,9 @@ LPMALLOC WINAPI MAPIGetDefaultMalloc(void)
{
TRACE
(
"()
\n
"
);
if
(
mapiFunctions
.
MAPIGetDefaultMalloc
)
return
mapiFunctions
.
MAPIGetDefaultMalloc
();
IMalloc_AddRef
((
LPMALLOC
)
&
MAPI_IMalloc
);
return
(
LPMALLOC
)
&
MAPI_IMalloc
;
}
...
...
dlls/mapi32/mapi32_main.c
View file @
2d1a7173
...
...
@@ -89,7 +89,15 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
*/
HRESULT
WINAPI
DllCanUnloadNow
(
void
)
{
return
MAPI_ObjectCount
==
0
?
S_OK
:
S_FALSE
;
HRESULT
ret
=
S_OK
;
if
(
mapiFunctions
.
DllCanUnloadNow
)
{
ret
=
mapiFunctions
.
DllCanUnloadNow
();
TRACE
(
"(): provider returns %d
\n
"
,
ret
);
}
return
MAPI_ObjectCount
==
0
?
ret
:
S_FALSE
;
}
/***********************************************************************
...
...
@@ -167,6 +175,9 @@ HRESULT WINAPI MAPILogonEx(ULONG_PTR uiparam, LPWSTR profile,
HRESULT
WINAPI
MAPIOpenLocalFormContainer
(
LPVOID
*
ppfcnt
)
{
if
(
mapiFunctions
.
MAPIOpenLocalFormContainer
)
return
mapiFunctions
.
MAPIOpenLocalFormContainer
(
ppfcnt
);
FIXME
(
"(%p) Stub
\n
"
,
ppfcnt
);
return
E_FAIL
;
}
...
...
@@ -189,6 +200,9 @@ VOID WINAPI MAPIUninitialize(void)
HRESULT
WINAPI
MAPIAdminProfiles
(
ULONG
ulFlags
,
LPPROFADMIN
*
lppProfAdmin
)
{
if
(
mapiFunctions
.
MAPIAdminProfiles
)
return
mapiFunctions
.
MAPIAdminProfiles
(
ulFlags
,
lppProfAdmin
);
FIXME
(
"(%u, %p): stub
\n
"
,
ulFlags
,
lppProfAdmin
);
*
lppProfAdmin
=
NULL
;
return
E_FAIL
;
...
...
dlls/mapi32/util.c
View file @
2d1a7173
...
...
@@ -68,6 +68,9 @@ MAPI_FUNCTIONS mapiFunctions;
*/
SCODE
WINAPI
ScInitMapiUtil
(
ULONG
ulReserved
)
{
if
(
mapiFunctions
.
ScInitMapiUtil
)
return
mapiFunctions
.
ScInitMapiUtil
(
ulReserved
);
FIXME
(
"(0x%08x)stub!
\n
"
,
ulReserved
);
if
(
ulReserved
)
return
MAPI_E_INVALID_PARAMETER
;
...
...
@@ -91,7 +94,10 @@ SCODE WINAPI ScInitMapiUtil(ULONG ulReserved)
*/
VOID
WINAPI
DeinitMapiUtil
(
void
)
{
FIXME
(
"()stub!
\n
"
);
if
(
mapiFunctions
.
DeinitMapiUtil
)
mapiFunctions
.
DeinitMapiUtil
();
else
FIXME
(
"()stub!
\n
"
);
}
typedef
LPVOID
*
LPMAPIALLOCBUFFER
;
...
...
@@ -124,6 +130,9 @@ SCODE WINAPI MAPIAllocateBuffer(ULONG cbSize, LPVOID *lppBuffer)
TRACE
(
"(%d,%p)
\n
"
,
cbSize
,
lppBuffer
);
if
(
mapiFunctions
.
MAPIAllocateBuffer
)
return
mapiFunctions
.
MAPIAllocateBuffer
(
cbSize
,
lppBuffer
);
if
(
!
lppBuffer
)
return
E_INVALIDARG
;
...
...
@@ -164,6 +173,9 @@ SCODE WINAPI MAPIAllocateMore(ULONG cbSize, LPVOID lpOrig, LPVOID *lppBuffer)
TRACE
(
"(%d,%p,%p)
\n
"
,
cbSize
,
lpOrig
,
lppBuffer
);
if
(
mapiFunctions
.
MAPIAllocateMore
)
return
mapiFunctions
.
MAPIAllocateMore
(
cbSize
,
lpOrig
,
lppBuffer
);
if
(
!
lppBuffer
||
!
lpBuff
||
!--
lpBuff
)
return
E_INVALIDARG
;
...
...
@@ -200,6 +212,9 @@ ULONG WINAPI MAPIFreeBuffer(LPVOID lpBuffer)
TRACE
(
"(%p)
\n
"
,
lpBuffer
);
if
(
mapiFunctions
.
MAPIFreeBuffer
)
return
mapiFunctions
.
MAPIFreeBuffer
(
lpBuffer
);
if
(
lpBuff
&&
--
lpBuff
)
{
while
(
lpBuff
)
...
...
@@ -239,6 +254,9 @@ HRESULT WINAPI WrapProgress(PVOID unk1, PVOID unk2, PVOID unk3, PVOID unk4, PVOI
*/
HRESULT
WINAPI
HrThisThreadAdviseSink
(
LPMAPIADVISESINK
lpSink
,
LPMAPIADVISESINK
*
lppNewSink
)
{
if
(
mapiFunctions
.
HrThisThreadAdviseSink
)
return
mapiFunctions
.
HrThisThreadAdviseSink
(
lpSink
,
lppNewSink
);
FIXME
(
"(%p,%p)semi-stub
\n
"
,
lpSink
,
lppNewSink
);
if
(
!
lpSink
||
!
lppNewSink
)
...
...
@@ -695,6 +713,9 @@ HRESULT WINAPI OpenStreamOnFile(LPALLOCATEBUFFER lpAlloc, LPFREEBUFFER lpFree,
TRACE
(
"(%p,%p,0x%08x,%s,%s,%p)
\n
"
,
lpAlloc
,
lpFree
,
ulFlags
,
debugstr_a
((
LPSTR
)
lpszPath
),
debugstr_a
((
LPSTR
)
lpszPrefix
),
lppStream
);
if
(
mapiFunctions
.
OpenStreamOnFile
)
return
mapiFunctions
.
OpenStreamOnFile
(
lpAlloc
,
lpFree
,
ulFlags
,
lpszPath
,
lpszPrefix
,
lppStream
);
if
(
lppStream
)
*
lppStream
=
NULL
;
...
...
@@ -857,6 +878,9 @@ BOOL WINAPI FGetComponentPath(LPCSTR component, LPCSTR qualifier, LPSTR dll_path
TRACE
(
"%s %s %p %u %d
\n
"
,
component
,
qualifier
,
dll_path
,
dll_path_length
,
install
);
if
(
mapiFunctions
.
FGetComponentPath
)
return
mapiFunctions
.
FGetComponentPath
(
component
,
qualifier
,
dll_path
,
dll_path_length
,
install
);
dll_path
[
0
]
=
0
;
hmsi
=
LoadLibraryA
(
"msi.dll"
);
...
...
@@ -903,6 +927,9 @@ HRESULT WINAPI HrQueryAllRows(LPMAPITABLE lpTable, LPSPropTagArray lpPropTags,
LPSRestriction
lpRestriction
,
LPSSortOrderSet
lpSortOrderSet
,
LONG
crowsMax
,
LPSRowSet
*
lppRows
)
{
if
(
mapiFunctions
.
HrQueryAllRows
)
return
mapiFunctions
.
HrQueryAllRows
(
lpTable
,
lpPropTags
,
lpRestriction
,
lpSortOrderSet
,
crowsMax
,
lppRows
);
FIXME
(
"(%p, %p, %p, %p, %d, %p): stub
\n
"
,
lpTable
,
lpPropTags
,
lpRestriction
,
lpSortOrderSet
,
crowsMax
,
lppRows
);
*
lppRows
=
NULL
;
return
MAPI_E_CALL_FAILED
;
...
...
@@ -1057,7 +1084,20 @@ void load_mapi_providers(void)
mapiFunctions
.
MAPILogonEx
=
(
void
*
)
GetProcAddress
(
mapi_ex_provider
,
"MAPILogonEx"
);
mapiFunctions
.
MAPIUninitialize
=
(
void
*
)
GetProcAddress
(
mapi_ex_provider
,
"MAPIUninitialize"
);
mapiFunctions
.
DeinitMapiUtil
=
(
void
*
)
GetProcAddress
(
mapi_ex_provider
,
"DeinitMapiUtil@0"
);
mapiFunctions
.
DllCanUnloadNow
=
(
void
*
)
GetProcAddress
(
mapi_ex_provider
,
"DllCanUnloadNow"
);
mapiFunctions
.
DllGetClassObject
=
(
void
*
)
GetProcAddress
(
mapi_ex_provider
,
"DllGetClassObject"
);
mapiFunctions
.
FGetComponentPath
=
(
void
*
)
GetProcAddress
(
mapi_ex_provider
,
"FGetComponentPath"
);
mapiFunctions
.
HrThisThreadAdviseSink
=
(
void
*
)
GetProcAddress
(
mapi_ex_provider
,
"HrThisThreadAdviseSink@8"
);
mapiFunctions
.
HrQueryAllRows
=
(
void
*
)
GetProcAddress
(
mapi_ex_provider
,
"HrQueryAllRows@24"
);
mapiFunctions
.
MAPIAdminProfiles
=
(
void
*
)
GetProcAddress
(
mapi_ex_provider
,
"MAPIAdminProfiles"
);
mapiFunctions
.
MAPIAllocateBuffer
=
(
void
*
)
GetProcAddress
(
mapi_ex_provider
,
"MAPIAllocateBuffer"
);
mapiFunctions
.
MAPIAllocateMore
=
(
void
*
)
GetProcAddress
(
mapi_ex_provider
,
"MAPIAllocateMore"
);
mapiFunctions
.
MAPIFreeBuffer
=
(
void
*
)
GetProcAddress
(
mapi_ex_provider
,
"MAPIFreeBuffer"
);
mapiFunctions
.
MAPIGetDefaultMalloc
=
(
void
*
)
GetProcAddress
(
mapi_ex_provider
,
"MAPIGetDefaultMalloc@0"
);
mapiFunctions
.
MAPIOpenLocalFormContainer
=
(
void
*
)
GetProcAddress
(
mapi_ex_provider
,
"MAPIOpenLocalFormContainer"
);
mapiFunctions
.
OpenStreamOnFile
=
(
void
*
)
GetProcAddress
(
mapi_ex_provider
,
"OpenStreamOnFile@24"
);
mapiFunctions
.
ScInitMapiUtil
=
(
void
*
)
GetProcAddress
(
mapi_ex_provider
,
"ScInitMapiUtil@4"
);
}
cleanUp:
...
...
dlls/mapi32/util.h
View file @
2d1a7173
...
...
@@ -44,7 +44,20 @@ typedef struct MAPI_FUNCTIONS {
LPMAPISENDDOCUMENTS
MAPISendDocuments
;
LPMAPIUNINITIALIZE
MAPIUninitialize
;
HRESULT
(
WINAPI
*
DllGetClassObject
)(
REFCLSID
,
REFIID
,
LPVOID
*
);
VOID
(
WINAPI
*
DeinitMapiUtil
)
(
void
);
HRESULT
(
WINAPI
*
DllCanUnloadNow
)
(
void
);
HRESULT
(
WINAPI
*
DllGetClassObject
)
(
REFCLSID
,
REFIID
,
LPVOID
*
);
BOOL
(
WINAPI
*
FGetComponentPath
)
(
LPCSTR
,
LPCSTR
,
LPSTR
,
DWORD
,
BOOL
);
HRESULT
(
WINAPI
*
MAPIAdminProfiles
)
(
ULONG
,
LPPROFADMIN
*
);
SCODE
(
WINAPI
*
MAPIAllocateBuffer
)
(
ULONG
,
LPVOID
*
);
SCODE
(
WINAPI
*
MAPIAllocateMore
)
(
ULONG
,
LPVOID
,
LPVOID
*
);
ULONG
(
WINAPI
*
MAPIFreeBuffer
)
(
LPVOID
);
LPMALLOC
(
WINAPI
*
MAPIGetDefaultMalloc
)
(
void
);
HRESULT
(
WINAPI
*
MAPIOpenLocalFormContainer
)
(
LPVOID
*
);
HRESULT
(
WINAPI
*
HrThisThreadAdviseSink
)
(
LPMAPIADVISESINK
,
LPMAPIADVISESINK
*
);
HRESULT
(
WINAPI
*
HrQueryAllRows
)
(
LPMAPITABLE
,
LPSPropTagArray
,
LPSRestriction
,
LPSSortOrderSet
,
LONG
,
LPSRowSet
*
);
HRESULT
(
WINAPI
*
OpenStreamOnFile
)
(
LPALLOCATEBUFFER
,
LPFREEBUFFER
,
ULONG
,
LPWSTR
,
LPWSTR
,
LPSTREAM
*
);
SCODE
(
WINAPI
*
ScInitMapiUtil
)
(
ULONG
ulReserved
);
}
MAPI_FUNCTIONS
;
extern
MAPI_FUNCTIONS
mapiFunctions
;
...
...
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