advapi32 redefines SECURITY_INFORMATION
Francois Gouget
fgouget at free.fr
Sat Feb 28 04:33:36 CST 2015
---
So svcctl.idl needs the SECURITY_INFORMATION definition and it's not
available from any other idl file. This results in this type being
defined twice when compiling dlls/advapi32/service.c: once in winnt.h
and then again in dlls/advapi32/svcctl.h.
We normally avoid this type of situation. An easy fix is to introduce
the usual _XXX_DEFINED macro check but this seems to be a first in an
idl file. Is there a better way?
include/wine/svcctl.idl | 3 +++
include/winnt.h | 3 +++
2 files changed, 6 insertions(+)
diff --git a/include/wine/svcctl.idl b/include/wine/svcctl.idl
index e8463b5..1c3d22f 100644
--- a/include/wine/svcctl.idl
+++ b/include/wine/svcctl.idl
@@ -65,7 +65,10 @@ interface svcctl
typedef [context_handle] void *SC_RPC_LOCK;
typedef [context_handle] void *SC_NOTIFY_RPC_HANDLE;
+ cpp_quote("#ifndef _SECURITY_INFORMATION_DEFINED")
+ cpp_quote("#define _SECURITY_INFORMATION_DEFINED")
typedef DWORD SECURITY_INFORMATION;
+ cpp_quote("#endif")
/* undocumented access rights */
cpp_quote("#define SERVICE_SET_STATUS 0x8000")
diff --git a/include/winnt.h b/include/winnt.h
index 4b06b2c..0a4185d 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -3971,7 +3971,10 @@ static const WCHAR SE_CREATE_GLOBAL_NAME[] = { 'S','e','C','r','e','a','t','e','
#define SE_RM_CONTROL_VALID 0x00004000
#define SE_SELF_RELATIVE 0x00008000
+#ifndef _SECURITY_INFORMATION_DEFINED
+#define _SECURITY_INFORMATION_DEFINED
typedef DWORD SECURITY_INFORMATION, *PSECURITY_INFORMATION;
+#endif
typedef WORD SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
/* The security descriptor structure */
--
2.1.4
More information about the wine-devel
mailing list