af062818b47340eef15700d2f0211576ba3506eevboxsync/*
af062818b47340eef15700d2f0211576ba3506eevboxsync * Copyright (C) 2003 Ulrich Czekalla for CodeWeavers
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * This library is free software; you can redistribute it and/or
af062818b47340eef15700d2f0211576ba3506eevboxsync * modify it under the terms of the GNU Lesser General Public
af062818b47340eef15700d2f0211576ba3506eevboxsync * License as published by the Free Software Foundation; either
af062818b47340eef15700d2f0211576ba3506eevboxsync * version 2.1 of the License, or (at your option) any later version.
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * This library is distributed in the hope that it will be useful,
af062818b47340eef15700d2f0211576ba3506eevboxsync * but WITHOUT ANY WARRANTY; without even the implied warranty of
af062818b47340eef15700d2f0211576ba3506eevboxsync * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
af062818b47340eef15700d2f0211576ba3506eevboxsync * Lesser General Public License for more details.
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * You should have received a copy of the GNU Lesser General Public
af062818b47340eef15700d2f0211576ba3506eevboxsync * License along with this library; if not, write to the Free Software
af062818b47340eef15700d2f0211576ba3506eevboxsync * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
af062818b47340eef15700d2f0211576ba3506eevboxsync */
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync/*
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync * a choice of LGPL license versions is made available with the language indicating
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync * that LGPLv2 or any later version may be used, or where a choice of which version
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync * of the LGPL is applied is otherwise unspecified.
b955672b950093ff7416d1269dd4d3b69983bd8fvboxsync */
ee6bcfc59fe3b0230aad85e2ef63d0402b7719b2vboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef __SDDL_H__
af062818b47340eef15700d2f0211576ba3506eevboxsync#define __SDDL_H__
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifdef __cplusplus
af062818b47340eef15700d2f0211576ba3506eevboxsyncextern "C" {
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Versioning */
af062818b47340eef15700d2f0211576ba3506eevboxsync#define SDDL_REVISION_1 1
af062818b47340eef15700d2f0211576ba3506eevboxsync#define SDDL_REVISION SDDL_REVISION_1
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef __WINESRC__
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Component tags */
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef UNICODE
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_OWNER "O"
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_GROUP "G"
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_DACL "D"
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_SACL "S"
af062818b47340eef15700d2f0211576ba3506eevboxsync#else
af062818b47340eef15700d2f0211576ba3506eevboxsync# if defined(__GNUC__)
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_OWNER (const WCHAR[]){ 'O',0 }
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_GROUP (const WCHAR[]){ 'G',0 }
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_DACL (const WCHAR[]){ 'D',0 }
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_SACL (const WCHAR[]){ 'S',0 }
af062818b47340eef15700d2f0211576ba3506eevboxsync# elif defined(_MSC_VER)
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_OWNER L"O"
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_GROUP L"G"
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_DACL L"D"
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_SACL L"S"
af062818b47340eef15700d2f0211576ba3506eevboxsync# else
af062818b47340eef15700d2f0211576ba3506eevboxsync static const WCHAR SDDL_OWNER[] = { 'O',0 };
af062818b47340eef15700d2f0211576ba3506eevboxsync static const WCHAR SDDL_GROUP[] = { 'G',0 };
af062818b47340eef15700d2f0211576ba3506eevboxsync static const WCHAR SDDL_DACL[] = { 'D',0 };
af062818b47340eef15700d2f0211576ba3506eevboxsync static const WCHAR SDDL_SACL[] = { 'S',0 };
af062818b47340eef15700d2f0211576ba3506eevboxsync# endif
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif /* UNICODE */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Separators as characters */
af062818b47340eef15700d2f0211576ba3506eevboxsync/* SDDL_SEPERATORC is not a typo, as per Microsoft's headers */
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef UNICODE
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_SEPERATORC ';'
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_DELIMINATORC ':'
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_ACE_BEGINC '('
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_ACE_ENDC ')'
af062818b47340eef15700d2f0211576ba3506eevboxsync#else
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_SEPERATORC ((WCHAR)';')
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_DELIMINATORC ((WCHAR)':')
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_ACE_BEGINC ((WCHAR)'(')
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_ACE_ENDC ((WCHAR)')')
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif /* UNICODE */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync/* Separators as strings */
af062818b47340eef15700d2f0211576ba3506eevboxsync/* SDDL_SEPERATOR is not a typo, as per Microsoft's headers */
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifndef UNICODE
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_SEPERATOR ";"
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_DELIMINATOR ":"
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_ACE_BEGIN "("
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_ACE_END ")"
af062818b47340eef15700d2f0211576ba3506eevboxsync#else
af062818b47340eef15700d2f0211576ba3506eevboxsync# if defined(__GNUC__)
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_SEPERATOR (const WCHAR[]){ ';',0 }
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_DELIMINATOR (const WCHAR[]){ ':',0 }
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_ACE_BEGIN (const WCHAR[]){ '(',0 }
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_ACE_END (const WCHAR[]){ ')',0 }
af062818b47340eef15700d2f0211576ba3506eevboxsync# elif defined(_MSC_VER)
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_SEPERATOR L";"
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_DELIMINATOR L":"
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_ACE_BEGIN L"("
af062818b47340eef15700d2f0211576ba3506eevboxsync# define SDDL_ACE_END L")"
af062818b47340eef15700d2f0211576ba3506eevboxsync# else
af062818b47340eef15700d2f0211576ba3506eevboxsync static const WCHAR SDDL_SEPERATOR[] = { ';',0 };
af062818b47340eef15700d2f0211576ba3506eevboxsync static const WCHAR SDDL_DELIMINATOR[] = { ':',0 };
af062818b47340eef15700d2f0211576ba3506eevboxsync static const WCHAR SDDL_ACE_BEGIN[] = { '(',0 };
af062818b47340eef15700d2f0211576ba3506eevboxsync static const WCHAR SDDL_ACE_END[] = { ')',0 };
af062818b47340eef15700d2f0211576ba3506eevboxsync# endif
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif /* UNICODE */
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif /* __WINESRC__ */
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL WINAPI ConvertSidToStringSidA( PSID, LPSTR* );
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL WINAPI ConvertSidToStringSidW( PSID, LPWSTR* );
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ConvertSidToStringSid WINELIB_NAME_AW(ConvertSidToStringSid)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL WINAPI ConvertStringSidToSidA( LPCSTR, PSID* );
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL WINAPI ConvertStringSidToSidW( LPCWSTR, PSID* );
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ConvertStringSidToSid WINELIB_NAME_AW(ConvertStringSidToSid)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL WINAPI ConvertStringSecurityDescriptorToSecurityDescriptorA(
af062818b47340eef15700d2f0211576ba3506eevboxsync LPCSTR, DWORD, PSECURITY_DESCRIPTOR*, PULONG );
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL WINAPI ConvertStringSecurityDescriptorToSecurityDescriptorW(
af062818b47340eef15700d2f0211576ba3506eevboxsync LPCWSTR, DWORD, PSECURITY_DESCRIPTOR*, PULONG );
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ConvertStringSecurityDescriptorToSecurityDescriptor WINELIB_NAME_AW(ConvertStringSecurityDescriptorToSecurityDescriptor)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL WINAPI ConvertSecurityDescriptorToStringSecurityDescriptorA(
af062818b47340eef15700d2f0211576ba3506eevboxsync PSECURITY_DESCRIPTOR, DWORD, SECURITY_INFORMATION, LPSTR*, PULONG );
af062818b47340eef15700d2f0211576ba3506eevboxsyncBOOL WINAPI ConvertSecurityDescriptorToStringSecurityDescriptorW(
af062818b47340eef15700d2f0211576ba3506eevboxsync PSECURITY_DESCRIPTOR, DWORD, SECURITY_INFORMATION, LPWSTR*, PULONG );
af062818b47340eef15700d2f0211576ba3506eevboxsync#define ConvertSecurityDescriptorToStringSecurityDescriptor WINELIB_NAME_AW(ConvertSecurityDescriptorToStringSecurityDescriptor)
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#ifdef __cplusplus
af062818b47340eef15700d2f0211576ba3506eevboxsync}
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync#endif /* __SDDL_H__ */