mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-14 16:46:17 +00:00
e658d82093
Sat Nov 29 12:35:26 1997 Alexandre Julliard <julliard@lrc.epfl.ch> * [if1632/builtin.c] Build a complete PE header for builtin Win32 modules. * [loader/pe_image.c] [loader/module.c] HMODULE32 now points to the loading address of the module. There is no longer a separate PE_MODULE structure. Fri Nov 28 11:21:47 1997 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de> * [ole/*][configure.in][Makefile.in][include/interfaces.h] [if1632/olesvr32.spec][if1632/olecli32.spec] New directory, moved OLE stuff there. new .spec files for olecli32,olesvr32, some stubs added. * [misc/shell.c] Added support for extracting icons from PE dlls. * [misc/shellord.c][if1632/shell32.spec] Added a huge heap of ordinal only exported shell functions (will work only in Win95). * [loader/task.c] Hack to make MakeProcInstance16 work in all cases (mplayer.exe). * [win32/string32.c][include/string32.h] Obsolete, removed. * [windows/keyboard.c] Added *RegisterHotkey. * [objects/font.c][objects/text.c] Added GetFontLanguageInfo, GetTextCharsetInfo. Wed Nov 26 18:10:40 1997 Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de> * [misc/network.c] In WNetGetConnection16 return the Drive label and not the DOS-Cwd. Makes Wordview 6 start on a network connected machine. * [controls/status.c] Catch a Null pointer in SW_SetText. * [files/dos_fs.c] Add NT5 functions GetLongPathName32. * [files/file.c] Make GetTempFileName16 accept drive 0 (Current Drive) too. Handle more errors and be more verbose in FILE_SetDosError, fix an error in DeleteFile32W * [memory/virtual.c] Implement FlushViewOfFile. * [misc/crtdll] Implement _rotl and splitpath and add a stub for _abnormal_termination. * [misc/printdrv.c] Stub for EnumPrinters32A. * [win32/newfns] Add Stub for QueryPerformanceFrequency, change return value for QueryPerformanceCounter. Add stub for DeviceIoControl. Tue Nov 25 15:55:01 1997 Martin Boehme <boehme@informatik.mu-luebeck.de> * [controls/combo.c] [controls/edit.c] [windows/defwnd.c] [windows/winpos.c] [windows/win.c] Removed WIN_NO_REDRAW flag. Tue Nov 25 13:20:35 1997 Douglas Ridgway <ridgway@taiga.v-wave.com> * [graphics/x11drv/bitblt.c] Fixed memory leak in BITBLT_GetDstArea. Sun Nov 23 14:05:23 1997 Andreas Mohr <100.30936@germany.net> * [files/directory.c] Export windows system directory to environment. * [if1632/Makefile.in] [if1632/builtin.c] [if1632/w32skrnl.spec] [if1632/win32s16.spec] [misc/w32scomb.c] [misc/w32skrnl.c] Added Win32s DLLs W32SKRNL and WIN32S16. * [if1632/kernel32.spec] [loader/module.c] Added misc functions for Win32s. * [if1632/kernel.spec] [loader/task.c] Added DefineHandleTable(). * [scheduler/process.c] Fixed SetEnvironmentVariable32A() to avoid heap corruption. Sat Nov 22 14:11:42 1997 Kristian Nielsen <kristian.nielsen@risoe.dk> * [windows/painting.c] Fix leak in BeginPaint16() for CS_PARENTDC windows where the update region was not properly released. Thu Nov 20 03:55:29 1997 Gordon Chaffee <chaffee@CS.Berkeley.EDU> * [loader/pe_image.c] Implemented forwarded DLL functions. * [objects/dib.c] Added support for 16- and 32-bit mode DIBs. Support negative bitmap heights. * [win32/process.c] Added stub for CreateProcess32W. * [win32/security.c] [include/ntdll.h] Added stubs for LookupAccountSid32A/W. * [scheduler/process.c] Use the size specified in the PE header for the process heap. Mon Nov 17 00:53:35 1997 Len White <phreak@cgocable.net> * [msdos/int3d.c] New file. Stubs for int3d. Sun Nov 16 12:30:00 PST 1997 Jason Schonberg <schon@mti.sgi.com> * [include/aspi.h] Changed comment style from C++ to C.
232 lines
7.5 KiB
C
232 lines
7.5 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#include "windows.h"
|
|
#include "winerror.h"
|
|
#include "ntdll.h"
|
|
#include "stddebug.h"
|
|
#include "debug.h"
|
|
|
|
BOOL32 WINAPI IsValidSid (LPSID pSid);
|
|
BOOL32 WINAPI EqualSid (LPSID pSid1, LPSID pSid2);
|
|
BOOL32 WINAPI EqualPrefixSid (LPSID pSid1, LPSID pSid2);
|
|
DWORD WINAPI GetSidLengthRequired (BYTE nSubAuthorityCount);
|
|
BOOL32 WINAPI AllocateAndInitializeSid(LPSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount, DWORD nSubAuthority0, DWORD nSubAuthority1, DWORD nSubAuthority2, DWORD nSubAuthority3, DWORD nSubAuthority4, DWORD nSubAuthority5, DWORD nSubAuthority6, DWORD nSubAuthority7, LPSID *pSid);
|
|
VOID* WINAPI FreeSid(LPSID pSid);
|
|
BOOL32 WINAPI InitializeSid (LPSID pSid, LPSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount);
|
|
LPSID_IDENTIFIER_AUTHORITY WINAPI GetSidIdentifierAuthority(LPSID pSid);
|
|
DWORD* WINAPI GetSidSubAuthority(LPSID pSid, DWORD nSubAuthority);
|
|
BYTE* WINAPI GetSidSubAuthorityCount(LPSID pSid);
|
|
DWORD WINAPI GetLengthSid(LPSID pSid);
|
|
BOOL32 WINAPI CopySid(DWORD nDestinationSidLength, LPSID pDestinationSid, LPSID pSourceSid);
|
|
|
|
/***********************************************************************
|
|
* IsValidSid (ADVAPI.80)
|
|
*/
|
|
BOOL32 WINAPI IsValidSid (LPSID pSid) {
|
|
if (!pSid || pSid->Revision != SID_REVISION)
|
|
return FALSE;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/***********************************************************************
|
|
* EqualSid (ADVAPI.40)
|
|
*/
|
|
BOOL32 WINAPI EqualSid (LPSID pSid1, LPSID pSid2) {
|
|
if (!IsValidSid(pSid1) || !IsValidSid(pSid2))
|
|
return FALSE;
|
|
|
|
if (*GetSidSubAuthorityCount(pSid1) != *GetSidSubAuthorityCount(pSid2))
|
|
return FALSE;
|
|
|
|
if (memcmp(pSid1, pSid2, GetLengthSid(pSid1)) != 0)
|
|
return FALSE;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/***********************************************************************
|
|
* EqualPrefixSid (ADVAPI.39)
|
|
*/
|
|
BOOL32 WINAPI EqualPrefixSid (LPSID pSid1, LPSID pSid2) {
|
|
if (!IsValidSid(pSid1) || !IsValidSid(pSid2))
|
|
return FALSE;
|
|
|
|
if (*GetSidSubAuthorityCount(pSid1) != *GetSidSubAuthorityCount(pSid2))
|
|
return FALSE;
|
|
|
|
if (memcmp(pSid1, pSid2, GetSidLengthRequired(pSid1->SubAuthorityCount - 1))
|
|
!= 0)
|
|
return FALSE;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/***********************************************************************
|
|
* GetSidLengthRequired (ADVAPI.63)
|
|
*/
|
|
DWORD WINAPI GetSidLengthRequired (BYTE nSubAuthorityCount) {
|
|
return sizeof (SID) + (nSubAuthorityCount - 1 * sizeof (DWORD));
|
|
}
|
|
|
|
/***********************************************************************
|
|
* AllocateAndInitializeSid (ADVAPI.11)
|
|
*/
|
|
BOOL32 WINAPI AllocateAndInitializeSid(LPSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
|
|
BYTE nSubAuthorityCount,
|
|
DWORD nSubAuthority0, DWORD nSubAuthority1,
|
|
DWORD nSubAuthority2, DWORD nSubAuthority3,
|
|
DWORD nSubAuthority4, DWORD nSubAuthority5,
|
|
DWORD nSubAuthority6, DWORD nSubAuthority7,
|
|
LPSID *pSid) {
|
|
|
|
if (!(*pSid = HeapAlloc( GetProcessHeap(), 0,
|
|
GetSidLengthRequired(nSubAuthorityCount))))
|
|
return FALSE;
|
|
(*pSid)->Revision = SID_REVISION;
|
|
if (pIdentifierAuthority)
|
|
memcpy(&(*pSid)->IdentifierAuthority, pIdentifierAuthority,
|
|
sizeof (SID_IDENTIFIER_AUTHORITY));
|
|
*GetSidSubAuthorityCount(*pSid) = nSubAuthorityCount;
|
|
|
|
if (nSubAuthorityCount > 0)
|
|
*GetSidSubAuthority(*pSid, 0) = nSubAuthority0;
|
|
if (nSubAuthorityCount > 1)
|
|
*GetSidSubAuthority(*pSid, 1) = nSubAuthority1;
|
|
if (nSubAuthorityCount > 2)
|
|
*GetSidSubAuthority(*pSid, 2) = nSubAuthority2;
|
|
if (nSubAuthorityCount > 3)
|
|
*GetSidSubAuthority(*pSid, 3) = nSubAuthority3;
|
|
if (nSubAuthorityCount > 4)
|
|
*GetSidSubAuthority(*pSid, 4) = nSubAuthority4;
|
|
if (nSubAuthorityCount > 5)
|
|
*GetSidSubAuthority(*pSid, 5) = nSubAuthority5;
|
|
if (nSubAuthorityCount > 6)
|
|
*GetSidSubAuthority(*pSid, 6) = nSubAuthority6;
|
|
if (nSubAuthorityCount > 7)
|
|
*GetSidSubAuthority(*pSid, 7) = nSubAuthority7;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/***********************************************************************
|
|
* FreeSid (ADVAPI.42)
|
|
*/
|
|
VOID* WINAPI FreeSid(LPSID pSid)
|
|
{
|
|
HeapFree( GetProcessHeap(), 0, pSid );
|
|
return NULL;
|
|
}
|
|
|
|
/***********************************************************************
|
|
* InitializeSecurityDescriptor (ADVAPI.73)
|
|
*/
|
|
BOOL32 WINAPI InitializeSecurityDescriptor( SECURITY_DESCRIPTOR *pDescr,
|
|
DWORD revision )
|
|
{
|
|
fprintf( stdnimp, "InitializeSecurityDescriptor: empty stub\n" );
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
/***********************************************************************
|
|
* InitializeSid (ADVAPI.74)
|
|
*/
|
|
BOOL32 WINAPI InitializeSid (LPSID pSid, LPSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
|
|
BYTE nSubAuthorityCount)
|
|
{
|
|
int i;
|
|
|
|
pSid->Revision = SID_REVISION;
|
|
if (pIdentifierAuthority)
|
|
memcpy(&pSid->IdentifierAuthority, pIdentifierAuthority,
|
|
sizeof (SID_IDENTIFIER_AUTHORITY));
|
|
*GetSidSubAuthorityCount(pSid) = nSubAuthorityCount;
|
|
|
|
for (i = 0; i < nSubAuthorityCount; i++)
|
|
*GetSidSubAuthority(pSid, i) = 0;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/***********************************************************************
|
|
* GetSidIdentifierAuthority (ADVAPI.62)
|
|
*/
|
|
LPSID_IDENTIFIER_AUTHORITY WINAPI GetSidIdentifierAuthority (LPSID pSid)
|
|
{
|
|
return &pSid->IdentifierAuthority;
|
|
}
|
|
|
|
/***********************************************************************
|
|
* GetSidSubAuthority (ADVAPI.64)
|
|
*/
|
|
DWORD * WINAPI GetSidSubAuthority (LPSID pSid, DWORD nSubAuthority)
|
|
{
|
|
return &pSid->SubAuthority[nSubAuthority];
|
|
}
|
|
|
|
/***********************************************************************
|
|
* GetSidSubAuthorityCount (ADVAPI.65)
|
|
*/
|
|
BYTE * WINAPI GetSidSubAuthorityCount (LPSID pSid)
|
|
{
|
|
return &pSid->SubAuthorityCount;
|
|
}
|
|
|
|
/***********************************************************************
|
|
* GetLengthSid (ADVAPI.48)
|
|
*/
|
|
DWORD WINAPI GetLengthSid (LPSID pSid)
|
|
{
|
|
return GetSidLengthRequired(*GetSidSubAuthorityCount(pSid));
|
|
}
|
|
|
|
/***********************************************************************
|
|
* CopySid (ADVAPI.24)
|
|
*/
|
|
BOOL32 WINAPI CopySid (DWORD nDestinationSidLength, LPSID pDestinationSid,
|
|
LPSID pSourceSid)
|
|
{
|
|
|
|
if (!IsValidSid(pSourceSid))
|
|
return FALSE;
|
|
|
|
if (nDestinationSidLength < GetLengthSid(pSourceSid))
|
|
return FALSE;
|
|
|
|
memcpy(pDestinationSid, pSourceSid, GetLengthSid(pSourceSid));
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/***********************************************************************
|
|
* LookupAccountSidA [ADVAPI32.86]
|
|
*/
|
|
BOOL32 WINAPI LookupAccountSid32A(LPCSTR system,PSID sid,
|
|
LPCSTR account,LPDWORD accountSize,
|
|
LPCSTR domain, LPDWORD domainSize,
|
|
PSID_NAME_USE name_use)
|
|
{
|
|
fprintf(stdnimp,"LookupAccountSid32A(%s,%p,%p,%p,%p,%p,%p),stub\n",
|
|
system,sid,account,accountSize,domain,domainSize,name_use);
|
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
|
return FALSE;
|
|
}
|
|
|
|
/***********************************************************************
|
|
* LookupAccountSidW [ADVAPI32.86]
|
|
*/
|
|
BOOL32 WINAPI LookupAccountSid32W(LPCWSTR system,PSID sid,
|
|
LPCWSTR account,LPDWORD accountSize,
|
|
LPCWSTR domain, LPDWORD domainSize,
|
|
PSID_NAME_USE name_use)
|
|
{
|
|
fprintf(stdnimp,"LookupAccountSid32W(%p,%p,%p,%p,%p,%p,%p),stub\n",
|
|
system,sid,account,accountSize,domain,domainSize,name_use);
|
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
|
return FALSE;
|
|
}
|
|
|