- Timestamp:
- May 22, 2000, 9:08:01 PM (25 years ago)
- Location:
- trunk/src/kernel32
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/Fileio.cpp
r3508 r3588 1 /* $Id: Fileio.cpp,v 1.3 2 2000-05-09 19:27:44sandervl Exp $ */1 /* $Id: Fileio.cpp,v 1.33 2000-05-22 19:07:53 sandervl Exp $ */ 2 2 3 3 /* … … 241 241 //****************************************************************************** 242 242 //****************************************************************************** 243 ODINFUNCTION4(BOOL, GetFileTime, HANDLE, hFile, LPFILETIME, arg2, LPFILETIME, arg3, LPFILETIME, arg4) 244 { 245 return HMGetFileTime(hFile, arg2, arg3, arg4); 246 } 247 //****************************************************************************** 248 //****************************************************************************** 243 249 ODINFUNCTION3(BOOL, CopyFileA, 244 250 LPCSTR, arg1, … … 280 286 LPCSTR, lpszFile) 281 287 { 282 dprintf(("DeleteFileA %s", lpszFile)); 283 return O32_DeleteFile(lpszFile); 284 // return TRUE; 288 BOOL rc; 289 290 rc = O32_DeleteFile(lpszFile); 291 if(!rc) { 292 dprintf(("DeleteFileA %s returned FALSE; last error %x", lpszFile, GetLastError())); 293 if(GetLastError() == 20) { 294 return TRUE; 295 } 296 } 297 else dprintf(("DeleteFileA %s", lpszFile)); 298 299 return rc; 285 300 } 286 301 //****************************************************************************** … … 431 446 } 432 447 } 448 //SvL: Open32 returns FILE_ATTRIBUTE_DIRECTORY|FILE_ATTRIBUTE_NORMAL for 449 // directories whereas NT 4 (SP6) only returns FILE_ATTRIBUTE_DIRECTORY 450 if(rc != -1 && (rc & FILE_ATTRIBUTE_DIRECTORY)) { 451 rc = FILE_ATTRIBUTE_DIRECTORY; 452 } 433 453 434 454 #if 0 // need more tests, maybe there is also a better way to hide simulated b: -
trunk/src/kernel32/HandleManager.cpp
r3234 r3588 1 /* $Id: HandleManager.cpp,v 1.3 8 2000-03-24 23:14:59sandervl Exp $ */1 /* $Id: HandleManager.cpp,v 1.39 2000-05-22 19:07:52 sandervl Exp $ */ 2 2 3 3 /* … … 1346 1346 } 1347 1347 1348 /***************************************************************************** 1349 * Name : HMDeviceHandler::GetFileTime 1350 * Purpose : router function for SetFileTime 1351 * Parameters: 1352 * Variables : 1353 * Result : 1354 * Remark : 1355 * Status : 1356 * 1357 * Author : SvL 1358 *****************************************************************************/ 1359 1360 BOOL HMGetFileTime (HANDLE hFile, 1361 const FILETIME *pFT1, 1362 const FILETIME *pFT2, 1363 const FILETIME *pFT3) 1364 { 1365 int iIndex; /* index into the handle table */ 1366 BOOL bResult; /* result from the device handler's API */ 1367 PHMHANDLE pHMHandle; /* pointer to the handle structure in the table */ 1368 1369 /* validate handle */ 1370 iIndex = _HMHandleQuery(hFile); /* get the index */ 1371 if (-1 == iIndex) /* error ? */ 1372 { 1373 SetLastError(ERROR_INVALID_HANDLE); /* set win32 error information */ 1374 return FALSE; /* signal failure */ 1375 } 1376 1377 pHMHandle = &TabWin32Handles[iIndex]; /* call device handler */ 1378 bResult = pHMHandle->pDeviceHandler->GetFileTime(&pHMHandle->hmHandleData, 1379 (LPFILETIME)pFT1, 1380 (LPFILETIME)pFT2, 1381 (LPFILETIME)pFT3); 1382 1383 return (bResult); /* deliver return code */ 1384 } 1385 1348 1386 1349 1387 /***************************************************************************** -
trunk/src/kernel32/hmdevice.cpp
r3140 r3588 1 /* $Id: hmdevice.cpp,v 1.1 8 2000-03-17 16:08:39sandervl Exp $ */1 /* $Id: hmdevice.cpp,v 1.19 2000-05-22 19:07:54 sandervl Exp $ */ 2 2 3 3 /* … … 350 350 pFT3)); 351 351 352 return(ERROR_INVALID_FUNCTION); 353 } 354 355 /***************************************************************************** 356 * Name : BOOL HMDeviceHandler::GetFileTime 357 * Purpose : get file time 358 * Parameters: PHMHANDLEDATA pHMHandleData 359 * PFILETIME pFT1 360 * PFILETIME pFT2 361 * PFILETIME pFT3 362 * Variables : 363 * Result : API returncode 364 * Remark : 365 * Status : 366 * 367 * Author : SvL 368 *****************************************************************************/ 369 370 BOOL HMDeviceHandler::GetFileTime(PHMHANDLEDATA pHMHandleData, 371 LPFILETIME pFT1, 372 LPFILETIME pFT2, 373 LPFILETIME pFT3) 374 { 375 DebugInt3(); 352 376 return(ERROR_INVALID_FUNCTION); 353 377 } -
trunk/src/kernel32/hmdevice.h
r3140 r3588 1 /* $Id: hmdevice.h,v 1.1 7 2000-03-17 16:08:39sandervl Exp $ */1 /* $Id: hmdevice.h,v 1.18 2000-05-22 19:07:55 sandervl Exp $ */ 2 2 3 3 /* … … 132 132 /* this is a handler method for calls to SetFileTime() */ 133 133 virtual BOOL SetFileTime (PHMHANDLEDATA pHMHandleData, 134 LPFILETIME pFT1, 135 LPFILETIME pFT2, 136 LPFILETIME pFT3); 137 138 /* this is a handler method for calls to GetFileTime() */ 139 virtual BOOL GetFileTime (PHMHANDLEDATA pHMHandleData, 134 140 LPFILETIME pFT1, 135 141 LPFILETIME pFT2, -
trunk/src/kernel32/hmopen32.cpp
r3501 r3588 1 /* $Id: hmopen32.cpp,v 1.2 1 2000-05-09 18:56:08sandervl Exp $ */1 /* $Id: hmopen32.cpp,v 1.22 2000-05-22 19:07:56 sandervl Exp $ */ 2 2 3 3 /* … … 185 185 if (hFile != INVALID_HANDLE_ERROR) 186 186 { 187 pHMHandleData->hHMHandle = hFile; 188 return (NO_ERROR); 189 } 190 else 191 return(O32_GetLastError()); 187 pHMHandleData->hHMHandle = hFile; 188 return (NO_ERROR); 189 } 190 else { 191 dprintf(("CreateFile failed; error %x", O32_GetLastError())); 192 return(O32_GetLastError()); 193 } 192 194 #else 193 195 … … 516 518 } 517 519 520 /***************************************************************************** 521 * Name : BOOL HMDeviceOpen32Class::GetFileTime 522 * Purpose : get file time 523 * Parameters: PHMHANDLEDATA pHMHandleData 524 * PFILETIME pFT1 525 * PFILETIME pFT2 526 * PFILETIME pFT3 527 * Variables : 528 * Result : API returncode 529 * Remark : 530 * Status : 531 * 532 * Author : SvL 533 *****************************************************************************/ 534 535 BOOL HMDeviceOpen32Class::GetFileTime(PHMHANDLEDATA pHMHandleData, 536 LPFILETIME pFT1, 537 LPFILETIME pFT2, 538 LPFILETIME pFT3) 539 { 540 return O32_GetFileTime(pHMHandleData->hHMHandle, 541 pFT1, 542 pFT2, 543 pFT3); 544 } 545 518 546 519 547 /***************************************************************************** … … 758 786 pHMHandleData->hHMHandle = hFile; 759 787 760 GetFileTime(hFile,761 NULL,762 NULL,763 &filetime );788 ::GetFileTime(hFile, 789 NULL, 790 NULL, 791 &filetime ); 764 792 FileTimeToDosDateTime(&filetime, 765 793 &filedatetime[0], -
trunk/src/kernel32/hmopen32.h
r2050 r3588 1 /* $Id: hmopen32.h,v 1. 4 1999-12-09 19:08:29sandervl Exp $ */1 /* $Id: hmopen32.h,v 1.5 2000-05-22 19:07:56 sandervl Exp $ */ 2 2 3 3 /* … … 95 95 LPFILETIME pFT3); 96 96 97 /* this is a handler method for calls to GetFileTime() */ 98 virtual BOOL GetFileTime (PHMHANDLEDATA pHMHandleData, 99 LPFILETIME pFT1, 100 LPFILETIME pFT2, 101 LPFILETIME pFT3); 102 97 103 /* this is a handler method for calls to GetFileSize() */ 98 104 virtual DWORD GetFileSize(PHMHANDLEDATA pHMHandleData, -
trunk/src/kernel32/lang.cpp
r3501 r3588 1 /* $Id: lang.cpp,v 1. 19 2000-05-09 18:56:09sandervl Exp $ */1 /* $Id: lang.cpp,v 1.20 2000-05-22 19:07:57 sandervl Exp $ */ 2 2 /* 3 3 * Win32 language API functions for OS/2 … … 141 141 { 142 142 dprintf(("KERNEL32: OS2GetUserDefaultLCID: returns %x", MAKELCID(GetLanguageId(), SORT_DEFAULT))); 143 return(MAKELCID(GetLanguageId(), SORT_DEFAULT)); //US English143 return(MAKELCID(GetLanguageId(), SORT_DEFAULT)); 144 144 } 145 145 //****************************************************************************** -
trunk/src/kernel32/oslibdos.cpp
r3360 r3588 1 /* $Id: oslibdos.cpp,v 1.2 6 2000-04-09 15:08:25sandervl Exp $ */1 /* $Id: oslibdos.cpp,v 1.27 2000-05-22 19:07:58 sandervl Exp $ */ 2 2 /* 3 3 * Wrappers for OS/2 Dos* API … … 420 420 //****************************************************************************** 421 421 //****************************************************************************** 422 DWORD OSLibDosDelete(char *lpszFileName) 423 { 424 return DosDelete(lpszFileName); 425 } 426 //****************************************************************************** 427 //****************************************************************************** 422 428 BOOL pmDateTimeToFileTime(FDATE *pDate,FTIME *pTime,FILETIME *pFT) 423 429 { -
trunk/src/kernel32/oslibdos.h
r3269 r3588 1 /* $Id: oslibdos.h,v 1.1 3 2000-03-29 15:17:29 cbratschiExp $ */1 /* $Id: oslibdos.h,v 1.14 2000-05-22 19:07:59 sandervl Exp $ */ 2 2 3 3 /* … … 71 71 DWORD OSLibDosRead(DWORD hFile, LPVOID lpBuffer, DWORD size, DWORD *nrBytesRead); 72 72 DWORD OSLibDosWrite(DWORD hFile, LPVOID lpBuffer, DWORD size, DWORD *nrBytesWritten); 73 DWORD OSLibDosDelete(char *lpszFileName); 73 74 74 75 #define OSLIB_SETPTR_FILE_CURRENT 1 -
trunk/src/kernel32/time.cpp
r2802 r3588 1 /* $Id: time.cpp,v 1. 7 2000-02-16 14:23:12sandervl Exp $ */1 /* $Id: time.cpp,v 1.8 2000-05-22 19:07:59 sandervl Exp $ */ 2 2 3 3 /* … … 114 114 dprintf(("KERNEL32: DosDateTimeToFileTime\n")); 115 115 return O32_DosDateTimeToFileTime(arg1, arg2, arg3); 116 }117 //******************************************************************************118 //******************************************************************************119 BOOL WIN32API GetFileTime( HANDLE arg1, LPFILETIME arg2, LPFILETIME arg3, LPFILETIME arg4)120 {121 dprintf(("KERNEL32: GetFileTime\n"));122 return O32_GetFileTime(arg1, arg2, arg3, arg4);123 116 } 124 117 //****************************************************************************** -
trunk/src/kernel32/winimagebase.h
r3483 r3588 1 /* $Id: winimagebase.h,v 1. 7 2000-05-02 20:53:14sandervl Exp $ */1 /* $Id: winimagebase.h,v 1.8 2000-05-22 19:08:00 sandervl Exp $ */ 2 2 3 3 /* … … 136 136 ULONG getPEResourceSize(ULONG id, ULONG type, ULONG lang = LANG_GETFIRST); 137 137 138 PIMAGE_RESOURCE_DATA_ENTRY getPEResourceEntry(ULONG id, ULONG type, ULONG lang = LANG_GETFIRST);138 PIMAGE_RESOURCE_DATA_ENTRY getPEResourceEntry(ULONG id, ULONG type, ULONG lang, int *error); 139 139 PIMAGE_RESOURCE_DATA_ENTRY ProcessResSubDir(PIMAGE_RESOURCE_DIRECTORY prdType, 140 ULONG *nodeData, int level );140 ULONG *nodeData, int level, int *error); 141 141 PIMAGE_RESOURCE_DIRECTORY getResSubDirW(PIMAGE_RESOURCE_DIRECTORY pResDir, LPCWSTR lpszName); 142 142 PIMAGE_RESOURCE_DIRECTORY getResSubDirA(PIMAGE_RESOURCE_DIRECTORY pResDir, LPCTSTR lpszName); -
trunk/src/kernel32/winimgres.cpp
r3547 r3588 1 /* $Id: winimgres.cpp,v 1.3 6 2000-05-18 09:08:38sandervl Exp $ */1 /* $Id: winimgres.cpp,v 1.37 2000-05-22 19:08:00 sandervl Exp $ */ 2 2 3 3 /* … … 35 35 #define BITMAP_TYPENAME2 "DIB" 36 36 37 #define RESERR_SUCCESS 0 38 #define RESERR_IDNOTFOUND 1 39 #define RESERR_TYPENOTFOUND 2 40 #define RESERR_LANGNOTFOUND 3 41 37 42 //****************************************************************************** 38 43 //Assuming names are case insensitive … … 40 45 //****************************************************************************** 41 46 PIMAGE_RESOURCE_DATA_ENTRY 42 Win32ImageBase::getPEResourceEntry(ULONG id, ULONG type, ULONG lang )47 Win32ImageBase::getPEResourceEntry(ULONG id, ULONG type, ULONG lang, int *error) 43 48 { 44 49 PIMAGE_RESOURCE_DIRECTORY prdType; … … 48 53 ULONG nodeData[3], i, j, nameOffset; 49 54 BOOL fFound = FALSE, fNumType; 55 56 *error = RESERR_TYPENOTFOUND; 50 57 51 58 //PH: our system LX DLLs might not have a resource segment … … 120 127 if(fFound) { 121 128 if((ULONG)prdType & 0x80000000) {//subdirectory? 122 pData = ProcessResSubDir(prdType, &nodeData[0], 2 );129 pData = ProcessResSubDir(prdType, &nodeData[0], 2, error); 123 130 } 124 131 else { … … 131 138 prde++; 132 139 } 140 if(pData) { 141 *error = RESERR_SUCCESS; //found it 142 } 133 143 return pData; 134 144 } … … 139 149 PIMAGE_RESOURCE_DATA_ENTRY 140 150 Win32ImageBase::ProcessResSubDir(PIMAGE_RESOURCE_DIRECTORY prdType, 141 ULONG *nodeData, int level )151 ULONG *nodeData, int level, int *error) 142 152 { 143 153 PIMAGE_RESOURCE_DIRECTORY prdType2; … … 158 168 prde = (PIMAGE_RESOURCE_DIRECTORY_ENTRY)((DWORD)prdType + sizeof(IMAGE_RESOURCE_DIRECTORY)); 159 169 170 if(level == 2) { 171 *error = RESERR_IDNOTFOUND; 172 } 173 else { 174 *error = RESERR_LANGNOTFOUND; 175 } 160 176 //level 2 (id) -> get first id? 161 177 //level 3 (lang) -> get first language? … … 204 220 if(fFound) { 205 221 if((ULONG)prdType2 & 0x80000000) {//subdirectory? 206 return ProcessResSubDir(prdType2, nodeData+1, 3 );222 return ProcessResSubDir(prdType2, nodeData+1, 3, error); 207 223 } 208 224 else { … … 222 238 ULONG Win32ImageBase::getPEResourceSize(ULONG id, ULONG type, ULONG lang) 223 239 { 224 PIMAGE_RESOURCE_DATA_ENTRY pData = NULL; 240 PIMAGE_RESOURCE_DATA_ENTRY pData = NULL; 241 int error; 225 242 226 243 switch(lang) { … … 237 254 } 238 255 239 pData = getPEResourceEntry(id, type, lang );256 pData = getPEResourceEntry(id, type, lang, &error); 240 257 if(pData == NULL) { 241 258 dprintf(("Win32ImageBase::getPEResourceSize: couldn't find resource %d (type %d, lang %x)", id, type, lang)); … … 246 263 //****************************************************************************** 247 264 //****************************************************************************** 248 HRSRC Win32ImageBase::findResourceA(LPCSTR lpszName, LPSTR lpszType, ULONG lang )265 HRSRC Win32ImageBase::findResourceA(LPCSTR lpszName, LPSTR lpszType, ULONG langid) 249 266 { 250 267 PIMAGE_RESOURCE_DATA_ENTRY pData = NULL; … … 252 269 BOOL fNumType; 253 270 char *winres = NULL; 254 ULONG id, type ;255 int i, j ;271 ULONG id, type, lang; 272 int i, j, error; 256 273 257 274 fNumType = TRUE; //assume numeric … … 275 292 else type = (ULONG)lpszType; 276 293 277 switch(lang ) {294 switch(langid) { 278 295 case LOCALE_SYSTEM_DEFAULT: 279 296 lang = GetSystemDefaultLangID(); … … 285 302 //TODO: Not correct; should take language associated with current thread 286 303 lang = IDLANG_GETFIRST; 287 break; 304 break; 305 case IDLANG_GETFIRST: 306 lang = GetUserDefaultLangID(); 307 break; 288 308 } 289 309 id = (ULONG)lpszName; 290 310 291 pData = getPEResourceEntry(id, type, lang );311 pData = getPEResourceEntry(id, type, lang, &error); 292 312 if(pData == NULL) { 293 if(HIWORD(id)) { 294 dprintf(("Win32ImageBase::getPEResource %s: couldn't find resource %s (type %d, lang %x)", szModule, id, type, lang)); 295 } 296 else dprintf(("Win32ImageBase::getPEResource %s: couldn't find resource %d (type %d, lang %x)", szModule, id, type, lang)); 297 return 0; 313 //TODO: Optimize this; check if language wasn't found 314 //try system default language 315 if(error == RESERR_LANGNOTFOUND) { 316 pData = getPEResourceEntry(id, type, GetSystemDefaultLangID(), &error); 317 } 318 if(pData == NULL) { 319 //finally try first available language 320 if(error == RESERR_LANGNOTFOUND) { 321 pData = getPEResourceEntry(id, type, IDLANG_GETFIRST, &error); 322 } 323 if(pData == NULL) { 324 if(HIWORD(id)) { 325 dprintf(("Win32ImageBase::getPEResource %s: couldn't find resource %s (type %d, lang %x)", szModule, id, type, lang)); 326 } 327 else dprintf(("Win32ImageBase::getPEResource %s: couldn't find resource %d (type %d, lang %x)", szModule, id, type, lang)); 328 return 0; 329 } 330 } 298 331 } 299 332 if(HIWORD(id)) { … … 374 407 { 375 408 PIMAGE_RESOURCE_DATA_ENTRY pData = NULL; 409 int error; 376 410 377 411 if(verstruct == NULL || bufLength == 0) { … … 379 413 return FALSE; 380 414 } 381 pData = getPEResourceEntry(ID_GETFIRST, NTRT_VERSION );415 pData = getPEResourceEntry(ID_GETFIRST, NTRT_VERSION, IDLANG_GETFIRST, &error); 382 416 if(pData == NULL) { 383 417 dprintf(("Win32PeLdrImage::getVersionStruct: couldn't find version resource!")); -
trunk/src/kernel32/wprocess.cpp
r3483 r3588 1 /* $Id: wprocess.cpp,v 1.8 0 2000-05-02 20:53:15sandervl Exp $ */1 /* $Id: wprocess.cpp,v 1.81 2000-05-22 19:08:01 sandervl Exp $ */ 2 2 3 3 /* … … 62 62 static THDB *threadList = 0; 63 63 static VMutex threadListMutex; 64 65 //TODO: This should not be here: (need to rearrange NTDLL; kernel32 can't depend on ntdll) 66 BOOLEAN (* WINAPI RtlAllocateAndInitializeSid) ( PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, 67 BYTE nSubAuthorityCount, 68 DWORD nSubAuthority0, 69 DWORD nSubAuthority1, 70 DWORD nSubAuthority2, 71 DWORD nSubAuthority3, 72 DWORD nSubAuthority4, 73 DWORD nSubAuthority5, 74 DWORD nSubAuthority6, 75 DWORD nSubAuthority7, 76 PSID *pSid); 77 static HINSTANCE hInstNTDll = 0; 64 78 //****************************************************************************** 65 79 //****************************************************************************** … … 202 216 } 203 217 else thdb->flags = 0; //todo textmode 218 219 //Initialize thread security objects (TODO: Not complete) 220 if(hInstNTDll == 0) { 221 hInstNTDll = LoadLibraryA("NTDLL.DLL"); 222 *(ULONG *)&RtlAllocateAndInitializeSid = (ULONG)GetProcAddress(hInstNTDll, "RtlAllocateAndInitializeSid"); 223 if(RtlAllocateAndInitializeSid == NULL) { 224 DebugInt3(); 225 } 226 } 227 SID_IDENTIFIER_AUTHORITY sidIdAuth = {0}; 228 thdb->threadinfo.dwType = SECTYPE_PROCESS | SECTYPE_INITIALIZED; 229 RtlAllocateAndInitializeSid(&sidIdAuth, 1, 0, 0, 0, 0, 0, 0, 0, 0, &thdb->threadinfo.SidUser.User.Sid); 230 thdb->threadinfo.SidUser.User.Attributes = 0; //????????? 231 232 thdb->threadinfo.pTokenGroups = (TOKEN_GROUPS*)malloc(sizeof(TOKEN_GROUPS)); 233 thdb->threadinfo.pTokenGroups->GroupCount = 1; 234 RtlAllocateAndInitializeSid(&sidIdAuth, 1, 0, 0, 0, 0, 0, 0, 0, 0, &thdb->threadinfo.PrimaryGroup.PrimaryGroup); 235 thdb->threadinfo.pTokenGroups->Groups[0].Sid = thdb->threadinfo.PrimaryGroup.PrimaryGroup; 236 thdb->threadinfo.pTokenGroups->Groups[0].Attributes = 0; //???? 237 // pPrivilegeSet = NULL; 238 // pTokenPrivileges= NULL; 239 // TokenOwner = {0}; 240 // DefaultDACL = {0}; 241 // TokenSource = {0}; 242 thdb->threadinfo.TokenType = TokenPrimary; 204 243 205 244 if(fMainThread)
Note:
See TracChangeset
for help on using the changeset viewer.