- Timestamp:
- Jan 3, 2000, 10:36:11 PM (26 years ago)
- Location:
- trunk/src/kernel32
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/makefile
r2300 r2311 1 # $Id: makefile,v 1.7 8 2000-01-02 22:51:11sandervl Exp $1 # $Id: makefile,v 1.79 2000-01-03 21:36:10 sandervl Exp $ 2 2 3 3 # … … 142 142 $(PDWIN32_INCLUDE)\wprocess.h \ 143 143 $(PDWIN32_INCLUDE)\winimagebase.h $(PDWIN32_INCLUDE)\winexebase.h $(PDWIN32_INCLUDE)\windllbase.h \ 144 thread.h144 oslibmisc.h thread.h 145 145 146 146 heap.OBJ: \ -
trunk/src/kernel32/npipe.cpp
r2301 r2311 1 /* $Id: npipe.cpp,v 1. 4 2000-01-02 22:51:58sandervl Exp $ */1 /* $Id: npipe.cpp,v 1.5 2000-01-03 21:36:10 sandervl Exp $ */ 2 2 /* 3 3 * Win32 Named pipes API … … 22 22 //****************************************************************************** 23 23 //****************************************************************************** 24 BOOL WIN32API PeekNamedPipe(HANDLE hPipe, LPVOID lpvBuffer, DWORD cbBuffer, 25 LPDWORD lpcbRead, LPDWORD lpcbAvail, LPDWORD lpcbMessage) 26 { 27 dprintf(("PeekNamedPipe Not Implemented! - yet\n")); 28 return(FALSE); 24 ODINFUNCTION6(BOOL,PeekNamedPipe,HANDLE ,hPipe, 25 LPVOID ,lpvBuffer, 26 DWORD ,cbBuffer, 27 LPDWORD,lpcbRead, 28 LPDWORD,lpcbAvail, 29 LPDWORD,lpcbMessage) 30 { 31 return(OSLibDosPeekNamedPipe(hPipe,lpvBuffer,cbBuffer,lpcbRead,lpcbAvail,lpcbMessage)); 29 32 } 30 33 //****************************************************************************** … … 38 41 //****************************************************************************** 39 42 //****************************************************************************** 40 //HANDLE WIN32API41 // DWORD nMaxInstances, DWORD nOutBufferSize,42 // DWORD nInBufferSize, DWORD nDefaultTimeOut,43 // void *lpSecurityAttributes)44 43 ODINFUNCTION8(HANDLE,CreateNamedPipeA,LPCTSTR,lpName, DWORD,dwOpenMode, DWORD,dwPipeMode, 45 44 DWORD, nMaxInstances, DWORD, nOutBufferSize, … … 106 105 * Status : NOT FULLY TESTED 107 106 * 108 * Author : Przemyslaw Dobrowolski [ Thu, 2000/01/02 12:48]107 * Author : Przemyslaw Dobrowolski [Sun, 2000/01/02 12:48] 109 108 *****************************************************************************/ 110 109 … … 143 142 * 144 143 * CallNamedPipe fails if the pipe is a byte-type pipe. 145 * Status : UNTESTED STUB 146 * 147 * Author : Markus Montkowski [Thu, 1998/05/19 11:46] 148 *****************************************************************************/ 149 150 BOOL WIN32API CallNamedPipeA( LPCSTR lpNamedPipeName, 151 LPVOID lpInBuffer, DWORD nInBufferSize, 152 LPVOID lpOutBuffer, DWORD nOutBufferSize, 153 LPDWORD lpBytesRead, DWORD nTimeOut) 154 { 155 156 dprintf(("KERNEL32: CallNamedPipeA(%08x,%08x,%08x,%08x,%08x,%08x) not implemented\n", 157 lpNamedPipeName, lpInBuffer, nInBufferSize, 158 lpOutBuffer, nOutBufferSize, lpBytesRead, nTimeOut 159 )); 160 161 return (FALSE); 162 } 163 164 /***************************************************************************** 165 * Name : BOOL WIN32AOI CallNamedPipeA 144 * Status : NOT FULLY TESTED 145 * 146 * Author : Przemyslaw Dobrowolski [Mon, 2000/01/03 13:32] 147 *****************************************************************************/ 148 149 ODINFUNCTION7(BOOL,CallNamedPipeA,LPCSTR , lpNamedPipeName, 150 LPVOID , lpInBuffer, 151 DWORD , nInBufferSize, 152 LPVOID , lpOutBuffer, 153 DWORD , nOutBufferSize, 154 LPDWORD, lpBytesRead, 155 DWORD , nTimeOut) 156 { 157 return(OSLibDosCallNamedPipe(lpNamedPipeName, 158 lpInBuffer, 159 nInBufferSize, 160 lpOutBuffer, 161 nOutBufferSize, 162 lpBytesRead, 163 nTimeOut )); 164 } 165 166 /***************************************************************************** 167 * Name : BOOL WIN32AOI CallNamedPipeW 166 168 * Purpose : The CallNamedPipe function connects to a message-type pipe 167 169 * (and waits if an instance of the pipe is not available), … … 191 193 * 192 194 * CallNamedPipe fails if the pipe is a byte-type pipe. 193 * Status : UNTESTED STUB 194 * 195 * Author : Markus Montkowski [Thu, 1998/05/19 11:46] 196 *****************************************************************************/ 197 198 BOOL WIN32API CallNamedPipeW( LPCWSTR lpNamedPipeName, 199 LPVOID lpInBuffer, DWORD nInBufferSize, 200 LPVOID lpOutBuffer, DWORD nOutBufferSize, 201 LPDWORD lpBytesRead, DWORD nTimeOut) 202 { 203 204 dprintf(("KERNEL32: CallNamedPipeA(%08x,%08x,%08x,%08x,%08x,%08x) not implemented\n", 205 lpNamedPipeName, lpInBuffer, nInBufferSize, 206 lpOutBuffer, nOutBufferSize, lpBytesRead, nTimeOut 207 )); 208 209 return (FALSE); 195 * Status : NOT FULLY TESTED 196 * 197 * Author : Przemyslaw Dobrowolski [Mon, 2000/01/03 13:33] 198 *****************************************************************************/ 199 ODINFUNCTION7(BOOL,CallNamedPipeW,LPCWSTR , lpNamedPipeName, 200 LPVOID , lpInBuffer, 201 DWORD , nInBufferSize, 202 LPVOID , lpOutBuffer, 203 DWORD , nOutBufferSize, 204 LPDWORD, lpBytesRead, 205 DWORD , nTimeOut) 206 { 207 char *asciiname; 208 BOOL rc; 209 210 asciiname = UnicodeToAsciiString((LPWSTR)lpNamedPipeName); 211 212 rc=OSLibDosCallNamedPipe(asciiname, 213 lpInBuffer, 214 nInBufferSize, 215 lpOutBuffer, 216 nOutBufferSize, 217 lpBytesRead, 218 nTimeOut ); 219 220 FreeAsciiString(asciiname); 221 222 return(rc); 210 223 } 211 224 /***************************************************************************** … … 218 231 * If the function fails, the return value is zero 219 232 * Remark : 220 * Status : UNTESTED STUB 221 * 222 * Author : Markus Montkowski [Tha, 1998/05/21 17:46] 223 *****************************************************************************/ 224 225 BOOL WIN32API DisconnectNamedPipe(HANDLE hNamedPipe) 226 { 227 228 dprintf(("KERNEL32: DisconnectNamedPipe(%08x) not implemented\n", 229 hNamedPipe 230 )); 231 232 return (FALSE); 233 * Status : NOT FULLY TESTED 234 * 235 * Author : Przemyslaw Dobrowolski [Mon, 2000/01/03 13:34] 236 *****************************************************************************/ 237 238 ODINFUNCTION1(BOOL,DisconnectNamedPipe,HANDLE,hNamedPipe) 239 { 240 return (OSLibDosDisconnectNamedPipe(hNamedPipe)); 233 241 } 234 242 … … 261 269 DWORD nMaxUserNameSize) 262 270 { 263 dprintf(("KERNEL32: GetNamedPipeHandleStateA(%08xh,%08xh,%08xh,%08xh,%08xh,%08xh,%08xh) not implemented \n",271 dprintf(("KERNEL32: GetNamedPipeHandleStateA(%08xh,%08xh,%08xh,%08xh,%08xh,%08xh,%08xh) not implemented (yet)\n", 264 272 hNamedPipe, 265 273 lpState, … … 367 375 368 376 BOOL WIN32API SetNamedPipeHandleState(HANDLE hNamedPipe, 369 370 371 377 LPDWORD lpdwMode, 378 LPDWORD lpcbMaxCollect, 379 LPDWORD lpdwCollectDataTimeout) 372 380 { 373 381 dprintf(("KERNEL32: SetNamedPipeHandleState(%08xh,%08xh,%08xh,%08xh) not implemented.\n", … … 395 403 * Result : TRUE / FALSE 396 404 * Remark : 397 * Status : UNTESTED STUB 398 * 399 * Author : Patrick Haller [Mon, 1998/06/15 08:00] 400 *****************************************************************************/ 401 402 DWORD WIN32API TransactNamedPipe(HANDLE hNamedPipe, 403 LPVOID lpvWriteBuf, 404 DWORD cbWriteBuf, 405 LPVOID lpvReadBuf, 406 DWORD cbReadBuf, 407 LPDWORD lpcbRead, 408 LPOVERLAPPED lpo) 409 { 410 dprintf(("KERNEL32: TransactNamedPipe(%08x,%08x,%08x,%08x,%08x,%08x,%08x) not implemented.\n", 411 hNamedPipe, 412 lpvWriteBuf, 413 cbWriteBuf, 414 lpvReadBuf, 415 cbReadBuf, 416 lpcbRead, 417 lpo)); 418 419 return (FALSE); 405 * Status : NOT FULLY TESTED (YET!) 406 * 407 * Author : Przemysaw Dobrowolski [Mon, 2000/01/03 08:48] 408 *****************************************************************************/ 409 410 ODINFUNCTION7(DWORD,TransactNamedPipe,HANDLE,hNamedPipe, 411 LPVOID,lpvWriteBuf, 412 DWORD,cbWriteBuf, 413 LPVOID,lpvReadBuf, 414 DWORD,cbReadBuf, 415 LPDWORD,lpcbRead, 416 LPOVERLAPPED,lpo) 417 { 418 return(OSLibDosTransactNamedPipe( hNamedPipe, 419 lpvWriteBuf, 420 cbWriteBuf, 421 lpvReadBuf, 422 cbReadBuf, 423 lpcbRead, 424 lpo)); 425 420 426 } 421 427 … … 431 437 * Result : TRUE / FALSE 432 438 * Remark : 433 * Status : UNTESTED STUB 434 * 435 * Author : Patrick Haller [Mon, 1998/06/15 08:00] 436 *****************************************************************************/ 437 438 BOOL WIN32API WaitNamedPipeA(LPCTSTR lpszNamedPipeName, 439 DWORD dwTimeout) 440 { 441 dprintf(("KERNEL32: WaitNamedPipeA(%s, %u) not implemented.\n", 442 lpszNamedPipeName, 443 dwTimeout)); 444 445 return (FALSE); 439 * Status : UNTESTED (YET) 440 * 441 * Author : Przemyslaw Dobrowolski [Mon, 2000/01/03 13:52] 442 *****************************************************************************/ 443 444 ODINFUNCTION2(BOOL,WaitNamedPipeA,LPCSTR,lpszNamedPipeName, DWORD, dwTimeout) 445 { 446 return(OSLibDosWaitNamedPipe(lpszNamedPipeName, dwTimeout)); 446 447 } 447 448 … … 458 459 * Result : TRUE / FALSE 459 460 * Remark : 460 * Status : UNTESTED STUB 461 * 462 * Author : Patrick Haller [Mon, 1998/06/15 08:00] 463 *****************************************************************************/ 464 465 BOOL WIN32API WaitNamedPipeW(LPCWSTR lpszNamedPipeName, 466 DWORD dwTimeout) 467 { 468 dprintf(("KERNEL32: WaitNamedPipeW(%s, %u) not implemented.\n", 469 lpszNamedPipeName, 470 dwTimeout)); 471 472 return (FALSE); 473 } 461 * Status : UNTESTED (YET) 462 * 463 * Author : Przemyslaw Dobrowolski [Mon, 2000/01/03 13:44] 464 *****************************************************************************/ 465 466 ODINFUNCTION2(BOOL,WaitNamedPipeW,LPCWSTR,lpszNamedPipeName, DWORD, dwTimeout) 467 { 468 char *asciiname; 469 DWORD rc; 470 471 asciiname = UnicodeToAsciiString((LPWSTR)lpszNamedPipeName); 472 473 rc=OSLibDosWaitNamedPipe(asciiname, dwTimeout); 474 475 FreeAsciiString(asciiname); 476 477 return(rc); 478 } -
trunk/src/kernel32/oslibdos.cpp
r2301 r2311 1 /* $Id: oslibdos.cpp,v 1.1 4 2000-01-02 22:51:39sandervl Exp $ */1 /* $Id: oslibdos.cpp,v 1.15 2000-01-03 21:36:11 sandervl Exp $ */ 2 2 /* 3 3 * Wrappers for OS/2 Dos* API … … 619 619 dwOS2PipeMode |= nMaxInstances; 620 620 621 // we must delete string \.\ because 622 // in Windows named pipes scheme is a \.\PIPE\pipename 623 // but in OS/2 only \PIPE\pipename 624 lpOS2Name = (LPSTR)lpName + 3; 625 621 if (strstr(lpName,"\\\\.")) 622 { 623 // If pipe is created on the local machine 624 // we must delete string \\. because 625 // in Windows named pipes scheme is a \\.\PIPE\pipename 626 // but in OS/2 only \PIPE\pipename 627 lpOS2Name = (LPSTR)lpName + 3; 628 } 629 else lpOS2Name = (LPSTR)lpName; 626 630 627 631 dprintf(("DosCreateNPipe(%s,%x,%x,%x,%x,%x)",lpOS2Name,dwOS2Mode,dwOS2PipeMode,nInBufferSize,nOutBufferSize,nDefaultTimeOut)); … … 691 695 LPSTR lpOS2Name; 692 696 DWORD rc; 693 // we must delete string \.\ because 694 // in Windows named pipes scheme is a \.\PIPE\pipename 695 // but in OS/2 only \PIPE\pipename 696 lpOS2Name = (LPSTR)lpNamedPipeName + 3; 697 698 if (strstr(lpNamedPipeName,"\\\\.")) 699 { 700 // If pipe is created on the local machine 701 // we must delete string \\. because 702 // in Windows named pipes scheme is a \\.\PIPE\pipename 703 // but in OS/2 only \PIPE\pipename 704 lpOS2Name = (LPSTR)lpNamedPipeName + 3; 705 } 706 else lpOS2Name = (LPSTR)lpNamedPipeName; 697 707 698 708 rc=DosCallNPipe(lpOS2Name, … … 751 761 lpBytesRead); 752 762 763 dprintf(("DosTransactNPipe returned rc=%d");) 753 764 if (!rc) return (TRUE); 754 765 else … … 770 781 SetLastError(ERROR_PIPE_NOT_CONNECTED_W); 771 782 772 return FALSE; 773 } 783 return (FALSE); 784 } 785 786 //****************************************************************************** 787 //****************************************************************************** 788 BOOL OSLibDosPeekNamedPipe(DWORD hPipe, 789 LPVOID lpvBuffer, 790 DWORD cbBuffer, 791 LPDWORD lpcbRead, 792 LPDWORD lpcbAvail, 793 LPDWORD lpcbMessage) 794 { 795 DWORD rc; 796 AVAILDATA availData ={0}; 797 ULONG ulDummy; 798 799 rc=DosPeekNPipe(hPipe,lpvBuffer,cbBuffer,lpcbRead,&availData,&ulDummy); 800 801 dprintf(("DosPeekNPipe returned rc=%d",rc)); 802 803 if (!rc) 804 { 805 *lpcbAvail = availData.cbpipe; 806 *lpcbMessage = availData.cbmessage; 807 return (TRUE); 808 } 809 else 810 if ( rc==ERROR_ACCESS_DENIED ) SetLastError(ERROR_ACCESS_DENIED_W); 811 else 812 if ( rc==ERROR_PIPE_BUSY ) SetLastError(ERROR_PIPE_BUSY_W); 813 else 814 if ( rc==ERROR_BAD_PIPE ) SetLastError(ERROR_BAD_PIPE_W); 815 else 816 if ( rc==ERROR_PIPE_NOT_CONNECTED ) SetLastError(ERROR_PIPE_NOT_CONNECTED_W); 817 else 818 // Unknown error 819 SetLastError(ERROR_PIPE_NOT_CONNECTED_W); 820 821 return (FALSE); 822 } 823 //****************************************************************************** 824 //****************************************************************************** 825 BOOL OSLibDosDisconnectNamedPipe(DWORD hPipe) 826 { 827 DWORD rc; 828 829 rc=DosDisConnectNPipe(hPipe); 830 831 dprintf(("DosDisConnectNPipe returned rc=%d",rc)); 832 833 if (!rc) return TRUE; 834 else 835 if ( rc==ERROR_BROKEN_PIPE ) SetLastError(ERROR_BROKEN_PIPE_W); 836 else 837 if ( rc==ERROR_BAD_PIPE ) SetLastError(ERROR_BAD_PIPE_W); 838 else 839 // Unknown error 840 SetLastError(ERROR_PIPE_NOT_CONNECTED_W); // Maybe another? 841 842 return (FALSE); 843 } 844 //****************************************************************************** 845 //****************************************************************************** 846 BOOL OSLibDosWaitNamedPipe(LPCSTR lpszNamedPipeName, 847 DWORD dwTimeout) 848 { 849 LPSTR lpOS2Name; 850 DWORD rc; 851 852 if (strstr(lpszNamedPipeName,"\\\\.")) 853 { 854 // If pipe is created on the local machine 855 // we must delete string \\. because 856 // in Windows named pipes scheme is a \\.\PIPE\pipename 857 // but in OS/2 only \PIPE\pipename 858 lpOS2Name = (LPSTR)lpszNamedPipeName + 3; 859 } 860 else lpOS2Name = (LPSTR)lpszNamedPipeName; 861 862 rc=DosWaitNPipe(lpOS2Name,dwTimeout); 863 864 dprintf(("DosWaitNPipe returned rc=%d",rc)); 865 866 if (!rc) return TRUE; 867 else 868 if ( rc == ERROR_PATH_NOT_FOUND ) SetLastError(ERROR_PATH_NOT_FOUND_W); 869 else 870 if ( rc==ERROR_BAD_PIPE ) SetLastError(ERROR_BAD_PIPE_W); 871 else 872 if ( rc == ERROR_PIPE_BUSY ) SetLastError(ERROR_PIPE_BUSY_W); 873 else 874 if ( rc == ERROR_SEM_TIMEOUT_W ) SetLastError(ERROR_SEM_TIMEOUT_W); 875 else 876 // TODO: Implemnt this using Windows Errors 877 // if (rc==ERROR_INTERRUPT) 878 SetLastError(ERROR_PIPE_NOT_CONNECTED_W); 879 880 return (FALSE); 881 } -
trunk/src/kernel32/oslibdos.h
r2301 r2311 1 /* $Id: oslibdos.h,v 1.1 0 2000-01-02 22:51:12sandervl Exp $ */1 /* $Id: oslibdos.h,v 1.11 2000-01-03 21:36:11 sandervl Exp $ */ 2 2 3 3 /* … … 106 106 LPVOID lpOutBuffer, 107 107 DWORD nOutBufferSize, 108 LPOVERLAPPED lpOverlapped ); 108 LPDWORD lpBytesRead, 109 LPOVERLAPPED lpOverlapped); 110 109 111 BOOL OSLibDosCallNamedPipe( LPCTSTR lpNamedPipeName, 110 112 LPVOID lpInBuffer, … … 114 116 LPDWORD lpBytesRead, 115 117 DWORD nTimeOut ); 118 119 BOOL OSLibDosPeekNamedPipe(DWORD hPipe, 120 LPVOID lpvBuffer, 121 DWORD cbBuffer, 122 LPDWORD lpcbRead, 123 LPDWORD lpcbAvail, 124 LPDWORD lpcbMessage); 116 125 117 126 BOOL OSLibDosConnectNamedPipe(DWORD hNamedPipe, LPOVERLAPPED lpOverlapped); … … 126 135 void* lpSecurityAttributes); 127 136 137 BOOL OSLibDosWaitNamedPipe(LPCSTR lpszNamedPipeName, 138 DWORD dwTimeout); 139 140 BOOL OSLibDosDisconnectNamedPipe(DWORD hPipe); 141 128 142 129 143 #endif -
trunk/src/kernel32/oslibmisc.cpp
r1496 r2311 1 /* $Id: oslibmisc.cpp,v 1. 4 1999-10-28 18:23:34sandervl Exp $ */1 /* $Id: oslibmisc.cpp,v 1.5 2000-01-03 21:36:11 sandervl Exp $ */ 2 2 3 3 /* … … 12 12 * 13 13 */ 14 #define INCL_WIN 14 15 #define INCL_BASE 15 16 #define INCL_DOSPROCESS … … 293 294 //****************************************************************************** 294 295 //****************************************************************************** 296 ULONG OSLibWinInitialize() 297 { 298 return (ULONG)WinInitialize(0); 299 } 300 //****************************************************************************** 301 //****************************************************************************** 302 ULONG OSLibWinQueryMsgQueue(ULONG hab) 303 { 304 // ULONG hmq; 305 306 // hmq = WinQueryWindowULong(HWND_DESKTOP, QWL_HMQ); 307 return (ULONG)WinCreateMsgQueue((HAB)hab, 0); 308 } 309 //****************************************************************************** 310 //****************************************************************************** -
trunk/src/kernel32/oslibmisc.h
r705 r2311 1 /* $Id: oslibmisc.h,v 1. 1 1999-08-26 12:56:02sandervl Exp $ */1 /* $Id: oslibmisc.h,v 1.2 2000-01-03 21:36:11 sandervl Exp $ */ 2 2 /* 3 3 * Misc util. procedures … … 46 46 ULONG OSLibAllocThreadLocalMemory(int nrdwords); 47 47 48 ULONG OSLibWinInitialize(); 49 ULONG OSLibWinQueryMsgQueue(ULONG hab); 50 48 51 #endif -
trunk/src/kernel32/thread.cpp
r2141 r2311 1 /* $Id: thread.cpp,v 1.2 0 1999-12-19 17:49:38sandervl Exp $ */1 /* $Id: thread.cpp,v 1.21 2000-01-03 21:36:11 sandervl Exp $ */ 2 2 3 3 /* … … 29 29 #include <winexebase.h> 30 30 #include "exceptutil.h" 31 #include "oslibmisc.h" 31 32 32 33 ODINDEBUGCHANNEL(KERNEL32-THREAD) … … 223 224 thdb->entry_arg = (void *)userdata; 224 225 226 thdb->hab = OSLibWinInitialize(); 227 thdb->hmq = OSLibWinQueryMsgQueue(thdb->hab); 228 dprintf(("Win32ThreadProc: hab %x hmq %x", thdb->hab, thdb->hmq)); 229 225 230 //Note: The Win32 exception structure referenced by FS:[0] is the same 226 231 // in OS/2
Note:
See TracChangeset
for help on using the changeset viewer.