mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 01:24:38 +00:00
Implement AssertFail and GetSetFileTimestamp.
svn path=/trunk/; revision=15080
This commit is contained in:
parent
0abe7f6039
commit
104e05622a
5 changed files with 107 additions and 5 deletions
|
@ -666,6 +666,7 @@ DECL_WINELIB_SETUPAPI_TYPE_AW(PFILEPATHS)
|
|||
|
||||
|
||||
LONG WINAPI AddTagToGroupOrderList(PCWSTR lpGroupName, DWORD dwUnknown2, DWORD dwUnknown3);
|
||||
VOID WINAPI AssertFail(LPSTR, UINT, LPSTR);
|
||||
DWORD WINAPI CaptureAndConvertAnsiArg(PCSTR lpSrc, PWSTR *lpDst);
|
||||
DWORD WINAPI CaptureStringArg(PCWSTR lpSrc, PWSTR *lpDst);
|
||||
BOOL WINAPI DelayedMove(PCWSTR lpExistingFileName, PCWSTR lpNewFileName);
|
||||
|
@ -673,6 +674,7 @@ BOOL WINAPI DoesUserHavePrivilege(PCWSTR lpPrivilegeName);
|
|||
PWSTR WINAPI DuplicateString(PCWSTR lpSrc);
|
||||
BOOL WINAPI EnablePrivilege(PCWSTR lpPrivilegeName, BOOL bEnable);
|
||||
BOOL WINAPI FileExists(PCWSTR lpFileName, PWIN32_FIND_DATAW lpFileFindData);
|
||||
DWORD WINAPI GetSetFileTimestamp(PCWSTR, PFILETIME, PFILETIME, PFILETIME, BOOLEAN);
|
||||
void WINAPI InstallHinfSectionA( HWND hwnd, HINSTANCE handle, PCSTR cmdline, INT show );
|
||||
void WINAPI InstallHinfSectionW( HWND hwnd, HINSTANCE handle, PCWSTR cmdline, INT show );
|
||||
#define InstallHinfSection WINELIB_NAME_AW(InstallHinfSection)
|
||||
|
|
|
@ -802,6 +802,8 @@ DWORD WINAPI RetreiveFileSecurity(LPCWSTR lpFileName,
|
|||
DWORD dwSize = 0x100;
|
||||
DWORD dwError;
|
||||
|
||||
TRACE("%s %p\n", debugstr_w(lpFileName), pSecurityDescriptor);
|
||||
|
||||
SecDesc = (PSECURITY_DESCRIPTOR)MyMalloc(dwSize);
|
||||
if (SecDesc == NULL)
|
||||
return ERROR_NOT_ENOUGH_MEMORY;
|
||||
|
@ -838,3 +840,97 @@ DWORD WINAPI RetreiveFileSecurity(LPCWSTR lpFileName,
|
|||
|
||||
return dwError;
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* AssertFail [SETUPAPI.@]
|
||||
*
|
||||
* Display an assertion message.
|
||||
*
|
||||
* PARAMS
|
||||
* lpFile [I] File name
|
||||
* uLine [I] Line number
|
||||
* lpMessage [I] Assertion message
|
||||
*
|
||||
* RETURNS
|
||||
* Nothing
|
||||
*/
|
||||
VOID WINAPI AssertFail(LPSTR lpFile, UINT uLine, LPSTR lpMessage)
|
||||
{
|
||||
CHAR szModule[MAX_PATH];
|
||||
CHAR szBuffer[2048];
|
||||
LPSTR lpName;
|
||||
LPSTR lpBuffer;
|
||||
|
||||
TRACE("%s %u %s\n", lpFile, uLine, lpMessage);
|
||||
|
||||
GetModuleFileNameA(hInstance, szModule, MAX_PATH);
|
||||
lpName = strrchr(szModule, '\\');
|
||||
if (lpName != NULL)
|
||||
lpName++;
|
||||
else
|
||||
lpName = szModule;
|
||||
|
||||
wsprintfA(szBuffer,
|
||||
"Assertion failure at line %u in file %s: %s\n\nCall DebugBreak()?",
|
||||
uLine, lpFile, lpMessage);
|
||||
|
||||
if (MessageBoxA(NULL, szBuffer, lpName, MB_SETFOREGROUND |
|
||||
MB_TASKMODAL | MB_ICONERROR | MB_YESNO) == IDYES)
|
||||
DebugBreak();
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* GetSetFileTimestamp [SETUPAPI.@]
|
||||
*
|
||||
* Gets or sets a files timestamp.
|
||||
*
|
||||
* PARAMS
|
||||
* lpFileName [I] File name
|
||||
* lpCreationTime [I/O] Creation time
|
||||
* lpLastAccessTime [I/O] Last access time
|
||||
* lpLastWriteTime [I/O] Last write time
|
||||
* bSetFileTime [I] TRUE: Set file times
|
||||
* FALSE: Get file times
|
||||
*
|
||||
* RETURNS
|
||||
* Success: ERROR_SUCCESS
|
||||
* Failure: other
|
||||
*/
|
||||
DWORD WINAPI GetSetFileTimestamp(LPCWSTR lpFileName,
|
||||
LPFILETIME lpCreationTime,
|
||||
LPFILETIME lpLastAccessTime,
|
||||
LPFILETIME lpLastWriteTime,
|
||||
BOOLEAN bSetFileTime)
|
||||
{
|
||||
HANDLE hFile;
|
||||
BOOLEAN bRet;
|
||||
DWORD dwError = ERROR_SUCCESS;
|
||||
|
||||
TRACE("%s %p %p %p %x\n", debugstr_w(lpFileName), lpCreationTime,
|
||||
lpLastAccessTime, lpLastWriteTime, bSetFileTime);
|
||||
|
||||
hFile = CreateFileW(lpFileName,
|
||||
bSetFileTime ? GENERIC_WRITE : GENERIC_READ,
|
||||
FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||
NULL,
|
||||
OPEN_EXISTING,
|
||||
0,
|
||||
NULL);
|
||||
|
||||
if (hFile == INVALID_HANDLE_VALUE)
|
||||
return GetLastError();
|
||||
|
||||
if (bSetFileTime)
|
||||
bRet = SetFileTime(hFile, lpCreationTime, lpLastAccessTime, lpLastWriteTime);
|
||||
else
|
||||
bRet = GetFileTime(hFile, lpCreationTime, lpLastAccessTime, lpLastWriteTime);
|
||||
|
||||
if (bRet == FALSE)
|
||||
dwError = GetLastError();
|
||||
|
||||
CloseHandle(hFile);
|
||||
|
||||
return dwError;
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
@ stub AddMiniIconToList
|
||||
@ stub AddTagToGroupOrderListEntry
|
||||
@ stub AppendStringToMultiSz
|
||||
@ stub AssertFail
|
||||
@ stdcall AssertFail(str long str)
|
||||
@ stub CMP_Init_Detection
|
||||
@ stub CMP_RegisterNotification
|
||||
@ stub CMP_Report_LogOn
|
||||
|
@ -205,7 +205,7 @@
|
|||
@ stub FreeStringArray
|
||||
@ stub GetCurrentDriverSigningPolicy
|
||||
@ stub GetNewInfName
|
||||
@ stub GetSetFileTimestamp
|
||||
@ stdcall GetSetFileTimestamp(wstr ptr ptr ptr long)
|
||||
@ stub GetVersionInfoFromImage
|
||||
@ stub InfIsFromOemLocation
|
||||
@ stub InstallCatalog
|
||||
|
@ -525,6 +525,7 @@
|
|||
@ stub StringTableLookUpStringEx
|
||||
@ stub StringTableSetExtraData
|
||||
@ stub StringTableStringFromId
|
||||
@ stub StringTableStringFromIdEx
|
||||
@ stub StringTableTrim
|
||||
@ stdcall TakeOwnershipOfFile(wstr)
|
||||
@ stdcall UnicodeToMultiByte(wstr long)
|
||||
|
|
|
@ -54,6 +54,7 @@ UINT CALLBACK QUEUE_callback_WtoA( void *context, UINT notification, UINT_PTR, U
|
|||
#define _S_IWRITE 0x0080
|
||||
#define _S_IREAD 0x0100
|
||||
|
||||
extern HINSTANCE hInstance;
|
||||
extern OSVERSIONINFOW OsVersionInfo;
|
||||
|
||||
DWORD WINAPI CaptureAndConvertAnsiArg(LPCSTR pSrc, LPWSTR *pDst);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/*
|
||||
/*
|
||||
* Setupapi cabinet routines
|
||||
*
|
||||
* Copyright 2003 Gregory M. Turner
|
||||
|
@ -20,7 +20,7 @@
|
|||
*
|
||||
* Many useful traces are commented in code, uncomment them if you have
|
||||
* trouble and run with WINEDEBUG=+setupapi
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
|
@ -44,6 +44,7 @@
|
|||
|
||||
#include "wine/debug.h"
|
||||
|
||||
HINSTANCE hInstance = 0;
|
||||
OSVERSIONINFOW OsVersionInfo;
|
||||
|
||||
static HINSTANCE CABINET_hInstance = 0;
|
||||
|
@ -544,7 +545,7 @@ BOOL WINAPI SetupIterateCabinetA(PCSTR CabinetFile, DWORD Reserved,
|
|||
TRACE("(CabinetFile == %s, Reserved == %lu, MsgHandler == ^%p, Context == ^%p)\n",
|
||||
debugstr_a(CabinetFile), Reserved, MsgHandler, Context);
|
||||
|
||||
if (! LoadCABINETDll())
|
||||
if (! LoadCABINETDll())
|
||||
return FALSE;
|
||||
|
||||
memset(&my_hsc, 0, sizeof(SC_HSC_A));
|
||||
|
@ -677,6 +678,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
|
|||
OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOW);
|
||||
if (!GetVersionExW(&OsVersionInfo))
|
||||
return FALSE;
|
||||
hInstance = (HINSTANCE)hinstDLL;
|
||||
break;
|
||||
case DLL_PROCESS_DETACH:
|
||||
UnloadCABINETDll();
|
||||
|
|
Loading…
Reference in a new issue