Changeset 7630 for trunk/src/kernel32/hmdevio.cpp
- Timestamp:
- Dec 14, 2001, 11:22:38 AM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/hmdevio.cpp
r7591 r7630 1 /* $Id: hmdevio.cpp,v 1.2 2 2001-12-09 15:29:41sandervl Exp $ */1 /* $Id: hmdevio.cpp,v 1.23 2001-12-14 10:22:38 sandervl Exp $ */ 2 2 3 3 /* … … 134 134 BOOL WIN32API RegisterCustomDriver(PFNDRVOPEN pfnDriverOpen, PFNDRVCLOSE pfnDriverClose, 135 135 PFNDRVIOCTL pfnDriverIOCtl, PFNDRVREAD pfnDriverRead, 136 PFNDRVWRITE pfnDriverWrite, LPCSTR lpDeviceName) 136 PFNDRVWRITE pfnDriverWrite, PFNDRVCANCELIO pfnDriverCancelIo, 137 PFNDRVGETOVERLAPPEDRESULT pfnDriverGetOverlappedResult, 138 LPCSTR lpDeviceName) 137 139 { 138 140 HMDeviceDriver *driver; 139 141 DWORD rc; 140 142 141 driver = new HMCustomDriver(pfnDriverOpen, pfnDriverClose, pfnDriverIOCtl, pfnDriverRead, pfnDriverWrite, lpDeviceName);143 driver = new HMCustomDriver(pfnDriverOpen, pfnDriverClose, pfnDriverIOCtl, pfnDriverRead, pfnDriverWrite, pfnDriverCancelIo, pfnDriverGetOverlappedResult, lpDeviceName); 142 144 if(driver == NULL) { 143 145 DebugInt3(); … … 401 403 HMCustomDriver::HMCustomDriver(PFNDRVOPEN pfnDriverOpen, PFNDRVCLOSE pfnDriverClose, 402 404 PFNDRVIOCTL pfnDriverIOCtl, PFNDRVREAD pfnDriverRead, 403 PFNDRVWRITE pfnDriverWrite, LPCSTR lpDeviceName) 405 PFNDRVWRITE pfnDriverWrite, PFNDRVCANCELIO pfnDriverCancelIo, 406 PFNDRVGETOVERLAPPEDRESULT pfnDriverGetOverlappedResult, 407 LPCSTR lpDeviceName) 404 408 : HMDeviceDriver(lpDeviceName), hDrvDll(0) 405 409 { … … 407 411 DebugInt3(); 408 412 } 409 this->pfnDriverOpen = pfnDriverOpen; 410 this->pfnDriverClose = pfnDriverClose; 411 this->pfnDriverIOCtl = pfnDriverIOCtl; 412 this->pfnDriverRead = pfnDriverRead; 413 this->pfnDriverWrite = pfnDriverWrite; 413 this->pfnDriverOpen = pfnDriverOpen; 414 this->pfnDriverClose = pfnDriverClose; 415 this->pfnDriverIOCtl = pfnDriverIOCtl; 416 this->pfnDriverRead = pfnDriverRead; 417 this->pfnDriverWrite = pfnDriverWrite; 418 this->pfnDriverCancelIo = pfnDriverCancelIo; 419 this->pfnDriverGetOverlappedResult = pfnDriverGetOverlappedResult; 414 420 } 415 421 //****************************************************************************** … … 536 542 return ret; 537 543 } 544 /***************************************************************************** 545 * Name : DWORD HMCustomDriver::CancelIo 546 * Purpose : cancel pending IO operation 547 * Variables : 548 * Result : 549 * Remark : 550 * Status : 551 * 552 * Author : SvL 553 *****************************************************************************/ 554 BOOL HMCustomDriver::CancelIo(PHMHANDLEDATA pHMHandleData) 555 { 556 BOOL ret; 557 558 if(pfnDriverCancelIo == NULL) { 559 dprintf(("HMCustomDriver::CancelIo: pfnDriverCancelIo == NULL")); 560 ::SetLastError(ERROR_INVALID_FUNCTION_W); 561 return FALSE; 562 } 563 ret = pfnDriverCancelIo(pHMHandleData->hHMHandle); 564 dprintf(("pfnDriverCancelIo %x returned %x", pHMHandleData->hHMHandle, ret)); 565 return ret; 566 } 567 /***************************************************************************** 568 * Name : DWORD HMCustomDriver::GetOverlappedResult 569 * Purpose : asynchronus I/O 570 * Parameters: PHMHANDLEDATA pHMHandleData 571 * LPOVERLAPPED arg2 572 * LPDWORD arg3 573 * BOOL arg4 574 * Variables : 575 * Result : API returncode 576 * Remark : 577 * Status : 578 * 579 * Author : SvL 580 *****************************************************************************/ 581 BOOL HMCustomDriver::GetOverlappedResult(PHMHANDLEDATA pHMHandleData, 582 LPOVERLAPPED lpOverlapped, 583 LPDWORD lpcbTransfer, 584 BOOL fWait) 585 { 586 dprintf(("KERNEL32-HMCustomDriver: HMCustomDriver::GetOverlappedResult(%08xh,%08xh,%08xh,%08xh)", 587 pHMHandleData->hHMHandle, lpOverlapped, lpcbTransfer, fWait)); 588 589 if(!(pHMHandleData->dwFlags & FILE_FLAG_OVERLAPPED_W)) { 590 dprintf(("!WARNING!: GetOverlappedResult called for a handle that wasn't opened with FILE_FLAG_OVERLAPPED")); 591 return TRUE; //NT4, SP6 doesn't fail 592 } 593 if(!lpOverlapped) { 594 ::SetLastError(ERROR_INVALID_PARAMETER); 595 return FALSE; 596 } 597 if(pfnDriverGetOverlappedResult == NULL) { 598 dprintf(("HMCustomDriver::GetOverlappedResult: pfnDriverGetOverlappedResult == NULL")); 599 ::SetLastError(ERROR_INVALID_FUNCTION_W); 600 return FALSE; 601 } 602 return pfnDriverGetOverlappedResult(pHMHandleData->hHMHandle, lpOverlapped, lpcbTransfer, fWait); 603 } 538 604 //****************************************************************************** 539 605 //******************************************************************************
Note:
See TracChangeset
for help on using the changeset viewer.