Ignore:
Timestamp:
Dec 9, 2001, 4:18:42 PM (24 years ago)
Author:
sandervl
Message:

custom driver fixes/changes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/hmdevio.cpp

    r7572 r7590  
    1 /* $Id: hmdevio.cpp,v 1.20 2001-12-08 10:39:33 sandervl Exp $ */
     1/* $Id: hmdevio.cpp,v 1.21 2001-12-09 15:18:42 sandervl Exp $ */
    22
    33/*
     
    5050    { "\\\\.\\MAPMEM", "PMAP$", FALSE, 0,     MAPMEMIOCtl},
    5151    { "FXMEMMAP.VXD",  "PMAP$", FALSE, 0,     FXMEMMAPIOCtl},
    52 #if 1
    53     { "\\\\.\\VPCAppSv", "", TRUE,  667,   VPCIOCtl}};
    54 #else
    5552    };
    56 #endif
    5753
    5854static int nrKnownDrivers = sizeof(knownDriver)/sizeof(WIN32DRV);
     
    391387//******************************************************************************
    392388//******************************************************************************
    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: //0x00
    400         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 IDT
    436         if(nInBufferSize < 0x22) {
    437             SetLastError(ERROR_BAD_LENGTH);
    438             return FALSE;
    439         }
    440         fVirtualPC = TRUE;
    441         return TRUE;
    442 
    443   case 0x9C402884: //0x04 ExAllocatePoolWithTag
    444   {
    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 patch
    455         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 //******************************************************************************
    468389HMCustomDriver::HMCustomDriver(HINSTANCE hInstance, LPCSTR lpDeviceName)
    469390                : HMDeviceDriver(lpDeviceName), hDrvDll(0)
     
    506427{
    507428   pHMHandleData->hHMHandle = pfnDriverOpen(pHMHandleData->dwAccess, pHMHandleData->dwShare);
    508    if(pHMHandleData->hHMHandle == 0) {
     429   if(pHMHandleData->hHMHandle == INVALID_HANDLE_VALUE_W) {
    509430       return ERROR_FILE_NOT_FOUND_W;
    510431   }
Note: See TracChangeset for help on using the changeset viewer.