Changeset 7590 for trunk/src/kernel32/hmdevio.cpp
- Timestamp:
- Dec 9, 2001, 4:18:42 PM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/hmdevio.cpp
r7572 r7590 1 /* $Id: hmdevio.cpp,v 1.2 0 2001-12-08 10:39:33sandervl Exp $ */1 /* $Id: hmdevio.cpp,v 1.21 2001-12-09 15:18:42 sandervl Exp $ */ 2 2 3 3 /* … … 50 50 { "\\\\.\\MAPMEM", "PMAP$", FALSE, 0, MAPMEMIOCtl}, 51 51 { "FXMEMMAP.VXD", "PMAP$", FALSE, 0, FXMEMMAPIOCtl}, 52 #if 153 { "\\\\.\\VPCAppSv", "", TRUE, 667, VPCIOCtl}};54 #else55 52 }; 56 #endif57 53 58 54 static int nrKnownDrivers = sizeof(knownDriver)/sizeof(WIN32DRV); … … 391 387 //****************************************************************************** 392 388 //****************************************************************************** 393 static BOOL VPCIOCtl(HANDLE hDevice, DWORD dwIoControlCode, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped)394 {395 APIRET rc;396 397 dprintf(("VPCIOCtl func %x: %x %d %x %d %x %x", dwIoControlCode, lpInBuffer, nInBufferSize, lpOutBuffer, nOutBufferSize, lpBytesReturned, lpOverlapped));398 switch(dwIoControlCode) {399 case 0x9C402880: //0x00400 if(nOutBufferSize < 4) {401 SetLastError(ERROR_BAD_LENGTH);402 return FALSE;403 }404 *(DWORD *)lpOutBuffer = 0x60001;405 *lpBytesReturned = 4;406 return TRUE;407 408 case 0x9C402894: //0x14 (get IDT table)409 {410 DWORD *lpBuffer = (DWORD *)lpOutBuffer;411 if(nOutBufferSize < 0x800) {412 SetLastError(ERROR_BAD_LENGTH);413 return FALSE;414 }415 memset(lpOutBuffer, 0, nOutBufferSize);416 for(int i=0;i<32;i++) {417 lpBuffer[i*2] = 0x0178c4c8;418 lpBuffer[i*2+1] = 0xfff18F00;419 }420 for(i=0x50;i<0x57;i++) {421 lpBuffer[i*2] = 0x0178c4c8;422 lpBuffer[i*2+1] = 0xfff18E00;423 }424 for(i=0x70;i<0x77;i++) {425 lpBuffer[i*2] = 0x0178c4c8;426 lpBuffer[i*2+1] = 0xfff18E00;427 }428 lpBuffer[0x4F*2] = 0x0178c4c8;429 lpBuffer[0x4F*2+1] = 0xfff18E00;430 lpBuffer[0xEF*2] = 0x0178c4c8;431 lpBuffer[0xEF*2+1] = 0xfff18E00;432 *lpBytesReturned = 0xFF*8;433 return TRUE;434 }435 case 0x9C40288C: //0x0C change IDT436 if(nInBufferSize < 0x22) {437 SetLastError(ERROR_BAD_LENGTH);438 return FALSE;439 }440 fVirtualPC = TRUE;441 return TRUE;442 443 case 0x9C402884: //0x04 ExAllocatePoolWithTag444 {445 DWORD *lpBuffer = (DWORD *)lpInBuffer;446 if(nInBufferSize < 0x08) {447 SetLastError(ERROR_BAD_LENGTH);448 return FALSE;449 }450 dprintf(("In: %x %x", lpBuffer[0], lpBuffer[1]));451 return TRUE;452 }453 454 case 0x9C402898: //0x18 Remove IDT patch455 if(nInBufferSize < 0x01) {456 SetLastError(ERROR_BAD_LENGTH);457 return FALSE;458 }459 fVirtualPC = FALSE;460 return TRUE;461 default:462 dprintf(("VPCIOCtl unknown func %X\n", dwIoControlCode));463 return FALSE;464 }465 }466 //******************************************************************************467 //******************************************************************************468 389 HMCustomDriver::HMCustomDriver(HINSTANCE hInstance, LPCSTR lpDeviceName) 469 390 : HMDeviceDriver(lpDeviceName), hDrvDll(0) … … 506 427 { 507 428 pHMHandleData->hHMHandle = pfnDriverOpen(pHMHandleData->dwAccess, pHMHandleData->dwShare); 508 if(pHMHandleData->hHMHandle == 0) {429 if(pHMHandleData->hHMHandle == INVALID_HANDLE_VALUE_W) { 509 430 return ERROR_FILE_NOT_FOUND_W; 510 431 }
Note:
See TracChangeset
for help on using the changeset viewer.