Changeset 5757 for trunk/src/kernel32/hmdevio.cpp
- Timestamp:
- May 19, 2001, 7:17:10 PM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/hmdevio.cpp
r5587 r5757 1 /* $Id: hmdevio.cpp,v 1. 9 2001-04-26 13:22:44sandervl Exp $ */1 /* $Id: hmdevio.cpp,v 1.10 2001-05-19 17:17:10 sandervl Exp $ */ 2 2 3 3 /* … … 22 22 23 23 #include <win32type.h> 24 #include <win32api.h> 24 25 #include <misc.h> 25 26 #include "hmdevio.h" … … 40 41 static BOOL MAPMEMIOCtl(HANDLE hDevice, DWORD dwIoControlCode, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped); 41 42 static BOOL FXMEMMAPIOCtl(HANDLE hDevice, DWORD dwIoControlCode, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped); 43 static BOOL VPCIOCtl(HANDLE hDevice, DWORD dwIoControlCode, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped); 42 44 43 45 static WIN32DRV knownDriver[] = 44 46 {{"\\\\.\\GpdDev", "", TRUE, 666, GpdDevIOCtl}, 45 47 { "\\\\.\\MAPMEM", "PMAP$", FALSE, 0, MAPMEMIOCtl}, 46 { "FXMEMMAP.VXD", "PMAP$", FALSE, 0, FXMEMMAPIOCtl}}; 48 { "FXMEMMAP.VXD", "PMAP$", FALSE, 0, FXMEMMAPIOCtl}, 49 #if 1 50 { "\\\\.\\VPCAppSv", "", TRUE, 667, VPCIOCtl}}; 51 #else 52 }; 53 #endif 47 54 48 55 static int nrKnownDrivers = sizeof(knownDriver)/sizeof(WIN32DRV); … … 297 304 //****************************************************************************** 298 305 //****************************************************************************** 306 static BOOL VPCIOCtl(HANDLE hDevice, DWORD dwIoControlCode, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped) 307 { 308 switch(dwIoControlCode) { 309 case 0x9C402880: //0x00 310 dprintf(("VPCIOCtl func 0x9C402880: %d %x %d %x %x", nInBufferSize, lpOutBuffer, nOutBufferSize, lpBytesReturned, lpOverlapped)); 311 if(nOutBufferSize < 4) { 312 SetLastError(ERROR_BAD_LENGTH); 313 return FALSE; 314 } 315 *(DWORD *)lpOutBuffer = 0x50001; 316 *lpBytesReturned = 4; 317 return TRUE; 318 case 0x9C402894: //0x14 (get IDT table) 319 { 320 DWORD *lpBuffer = (DWORD *)lpOutBuffer; 321 dprintf(("VPCIOCtl func 0x9C402894: %d %x %d %x %x", nInBufferSize, lpOutBuffer, nOutBufferSize, lpBytesReturned, lpOverlapped)); 322 if(nOutBufferSize < 0x800) { 323 SetLastError(ERROR_BAD_LENGTH); 324 return FALSE; 325 } 326 memset(lpOutBuffer, 0, nOutBufferSize); 327 for(int i=0;i<16;i++) { 328 lpBuffer[i*2] = 0x01580000; 329 lpBuffer[i*2+1] = 0xFF008E00; 330 } 331 lpBuffer[0xEF*2] = 0x01580000; 332 lpBuffer[0xEF*2+1] = 0xFF008E00; 333 *lpBytesReturned = 0xF0*8; 334 return TRUE; 335 } 336 case 0x9C40288C: //change IDT 337 dprintf(("VPCIOCtl func 0x9C40288C: %d %x %d %x %x", nInBufferSize, lpOutBuffer, nOutBufferSize, lpBytesReturned, lpOverlapped)); 338 if(nInBufferSize < 0x22) { 339 SetLastError(ERROR_BAD_LENGTH); 340 return FALSE; 341 } 342 return TRUE; 343 default: 344 dprintf(("VPCIOCtl unknown func %X\n", dwIoControlCode)); 345 return FALSE; 346 } 347 } 348 //****************************************************************************** 349 //****************************************************************************** 299 350 BOOL WIN32API QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount) 300 351 {
Note:
See TracChangeset
for help on using the changeset viewer.