Changeset 98276 in vbox
- Timestamp:
- Jan 24, 2023 11:34:55 AM (2 years ago)
- svn:sync-xref-src-repo-rev:
- 155479
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/pdmcardreaderinfs.h
r98103 r98276 83 83 DECLR3CALLBACKMEMBER(int, pfnEndTransaction,(PPDMICARDREADERDOWN pInterface, void *pvUser, uint32_t u32Disposition)); 84 84 DECLR3CALLBACKMEMBER(int, pfnTransmit,(PPDMICARDREADERDOWN pInterface, void *pvUser, 85 const PDMICARDREADER_IO_REQUEST *p ioSendRequest,85 const PDMICARDREADER_IO_REQUEST *pIoSendRequest, 86 86 const uint8_t *pu8SendBuffer, uint32_t cbSendBuffer, uint32_t cbRecvBuffer)); 87 87 /** -
trunk/include/VBox/vmm/pdmifs.h
r98103 r98276 2288 2288 DECLR3CALLBACKMEMBER(int, pfnDeviceConstructComplete, (PPDMIPCIRAWCONNECTOR pInterface, const char *pcszName, 2289 2289 uint32_t uHostPciAddress, uint32_t uGuestPciAddress, 2290 int rc));2290 int vrc)); 2291 2291 2292 2292 } PDMIPCIRAWCONNECTOR; -
trunk/src/VBox/Main/src-client/UsbCardReader.cpp
r98103 r98276 76 76 uint32_t cReaderStats) 77 77 { 78 LogFlowFunc(("ENTER: pvUser:%p, u32Timeout:%d\n", 79 pvUser, u32Timeout)); 78 LogFlowFunc(("ENTER: pvUser:%p, u32Timeout:%d\n", pvUser, u32Timeout)); 80 79 81 80 UsbCardReader *pUsbCardReader = pThis->pUsbCardReader; 82 81 if (!pUsbCardReader) 83 {84 82 pThis->pICardReaderUp->pfnSetStatusChange(pThis->pICardReaderUp, 85 83 pvUser, VRDE_SCARD_E_NO_SMARTCARD, 86 84 paReaderStats, cReaderStats); 87 }88 85 else 89 { 90 pUsbCardReader->GetStatusChange(pThis, pvUser, u32Timeout, 91 paReaderStats, cReaderStats); 92 } 86 pUsbCardReader->GetStatusChange(pThis, pvUser, u32Timeout, paReaderStats, cReaderStats); 93 87 94 88 LogFlowFuncLeave(); … … 102 96 UsbCardReader *pUsbCardReader = pThis->pUsbCardReader; 103 97 if (!pUsbCardReader) 104 { 105 pThis->pICardReaderUp->pfnEstablishContext(pThis->pICardReaderUp, 106 VRDE_SCARD_E_NO_SMARTCARD); 107 } 98 pThis->pICardReaderUp->pfnEstablishContext(pThis->pICardReaderUp, VRDE_SCARD_E_NO_SMARTCARD); 108 99 else 109 {110 100 pUsbCardReader->EstablishContext(pThis); 111 }112 101 113 102 LogFlowFuncLeave(); 114 103 } 115 104 116 static DECLCALLBACK(void) drvCardReaderCmdReleaseContext(PUSBCARDREADER pThis, 117 void *pvUser) 118 { 119 LogFlowFunc(("ENTER: pvUser:%p\n", 120 pvUser)); 105 static DECLCALLBACK(void) drvCardReaderCmdReleaseContext(PUSBCARDREADER pThis, void *pvUser) 106 { 107 LogFlowFunc(("ENTER: pvUser:%p\n", pvUser)); 121 108 NOREF(pvUser); 122 109 … … 127 114 } 128 115 else 129 {130 116 pUsbCardReader->ReleaseContext(pThis); 131 }132 117 133 118 LogFlowFuncLeave(); 134 119 } 135 120 136 static DECLCALLBACK(void) drvCardReaderCmdStatus(PUSBCARDREADER pThis, 137 void *pvUser) 138 { 139 LogFlowFunc(("ENTER: pvUser:%p\n", 140 pvUser)); 121 static DECLCALLBACK(void) drvCardReaderCmdStatus(PUSBCARDREADER pThis, void *pvUser) 122 { 123 LogFlowFunc(("ENTER: pvUser:%p\n", pvUser)); 141 124 142 125 UsbCardReader *pUsbCardReader = pThis->pUsbCardReader; … … 154 137 } 155 138 else 156 {157 139 pUsbCardReader->Status(pThis, pvUser); 158 }159 140 160 141 LogFlowFuncLeave(); … … 172 153 UsbCardReader *pUsbCardReader = pThis->pUsbCardReader; 173 154 if (!pUsbCardReader) 174 {175 155 pThis->pICardReaderUp->pfnConnect(pThis->pICardReaderUp, 176 156 pvUser, 177 157 VRDE_SCARD_E_NO_SMARTCARD, 178 158 0); 179 }180 159 else 181 { 182 pUsbCardReader->Connect(pThis, pvUser, pcszCardReaderName, 183 u32ShareMode, u32PreferredProtocols); 184 } 160 pUsbCardReader->Connect(pThis, pvUser, pcszCardReaderName, u32ShareMode, u32PreferredProtocols); 185 161 186 162 LogFlowFuncLeave(); … … 191 167 uint32_t u32Disposition) 192 168 { 193 LogFlowFunc(("ENTER: pvUser:%p, u32Disposition:%RX32\n", 194 pvUser, u32Disposition)); 169 LogFlowFunc(("ENTER: pvUser:%p, u32Disposition:%RX32\n", pvUser, u32Disposition)); 195 170 196 171 UsbCardReader *pUsbCardReader = pThis->pUsbCardReader; 197 172 if (!pUsbCardReader) 198 { 199 pThis->pICardReaderUp->pfnDisconnect(pThis->pICardReaderUp, 200 pvUser, 201 VRDE_SCARD_E_NO_SMARTCARD); 202 } 173 pThis->pICardReaderUp->pfnDisconnect(pThis->pICardReaderUp, pvUser, VRDE_SCARD_E_NO_SMARTCARD); 203 174 else 204 {205 175 pUsbCardReader->Disconnect(pThis, pvUser, u32Disposition); 206 }207 176 208 177 LogFlowFuncLeave(); … … 211 180 static DECLCALLBACK(void) drvCardReaderCmdTransmit(PUSBCARDREADER pThis, 212 181 void *pvUser, 213 PDMICARDREADER_IO_REQUEST *p ioSendRequest,214 uint8_t *p u8SendBuffer,182 PDMICARDREADER_IO_REQUEST *pIoSendRequest, 183 uint8_t *pbSendBuffer, 215 184 uint32_t cbSendBuffer, 216 185 uint32_t cbRecvBuffer) 217 186 { 218 LogFlowFunc(("ENTER: pvUser:%p, p ioSendRequest:%p, pu8SendBuffer:%p, cbSendBuffer:%d, cbRecvBuffer:%d\n",219 pvUser, p ioSendRequest, pu8SendBuffer, cbSendBuffer, cbRecvBuffer));187 LogFlowFunc(("ENTER: pvUser:%p, pIoSendRequest:%p, pbSendBuffer:%p, cbSendBuffer:%d, cbRecvBuffer:%d\n", 188 pvUser, pIoSendRequest, pbSendBuffer, cbSendBuffer, cbRecvBuffer)); 220 189 221 190 UsbCardReader *pUsbCardReader = pThis->pUsbCardReader; 222 191 if (!pUsbCardReader) 223 {224 192 pThis->pICardReaderUp->pfnTransmit(pThis->pICardReaderUp, 225 193 pvUser, … … 228 196 /* pu8RecvBuffer */ NULL, 229 197 /* cbRecvBuffer*/ 0); 230 }231 198 else 232 { 233 pUsbCardReader->Transmit(pThis, pvUser, pioSendRequest, 234 pu8SendBuffer, cbSendBuffer, cbRecvBuffer); 235 } 199 pUsbCardReader->Transmit(pThis, pvUser, pIoSendRequest, pbSendBuffer, cbSendBuffer, cbRecvBuffer); 236 200 237 201 /* Clean up buffers allocated by driver */ 238 RTMemFree(p ioSendRequest);239 RTMemFree(p u8SendBuffer);202 RTMemFree(pIoSendRequest); 203 RTMemFree(pbSendBuffer); 240 204 241 205 LogFlowFuncLeave(); … … 252 216 UsbCardReader *pUsbCardReader = pThis->pUsbCardReader; 253 217 if (!pUsbCardReader) 254 {255 218 pThis->pICardReaderUp->pfnGetAttrib(pThis->pICardReaderUp, 256 219 pvUser, … … 259 222 /* pvAttrib */ NULL, 260 223 /* cbAttrib */ 0); 261 }262 224 else 263 {264 225 pUsbCardReader->GetAttrib(pThis, pvUser, u32AttrId, cbAttrib); 265 }266 226 267 227 LogFlowFuncLeave(); … … 279 239 UsbCardReader *pUsbCardReader = pThis->pUsbCardReader; 280 240 if (!pUsbCardReader) 281 { 282 pThis->pICardReaderUp->pfnSetAttrib(pThis->pICardReaderUp, 283 pvUser, 284 VRDE_SCARD_E_NO_SMARTCARD, 285 u32AttrId); 286 } 241 pThis->pICardReaderUp->pfnSetAttrib(pThis->pICardReaderUp, pvUser, VRDE_SCARD_E_NO_SMARTCARD, u32AttrId); 287 242 else 288 {289 243 pUsbCardReader->SetAttrib(pThis, pvUser, u32AttrId, (uint8_t *)pvAttrib, cbAttrib); 290 }291 244 292 245 /* Clean up buffers allocated by driver */ … … 308 261 UsbCardReader *pUsbCardReader = pThis->pUsbCardReader; 309 262 if (!pUsbCardReader) 310 {311 263 pThis->pICardReaderUp->pfnControl(pThis->pICardReaderUp, 312 264 pvUser, … … 315 267 /* pvOutBuffer */ NULL, 316 268 /* cbOutBuffer */ 0); 317 }318 269 else 319 { 320 pUsbCardReader->Control(pThis, pvUser, u32ControlCode, 321 (uint8_t *)pvInBuffer, cbInBuffer, cbOutBuffer); 322 } 270 pUsbCardReader->Control(pThis, pvUser, u32ControlCode, (uint8_t *)pvInBuffer, cbInBuffer, cbOutBuffer); 323 271 324 272 /* Clean up buffers allocated by driver */ … … 333 281 */ 334 282 283 /** @implement_interface_method{PDMICARDREADERDOWN,pfnConnect} */ 335 284 static DECLCALLBACK(int) drvCardReaderDownConnect(PPDMICARDREADERDOWN pInterface, 336 285 void *pvUser, … … 343 292 pcszCardReaderName, pvUser, u32ShareMode, u32PreferredProtocols)); 344 293 PUSBCARDREADER pThis = RT_FROM_MEMBER(pInterface, USBCARDREADER, ICardReaderDown); 345 int rc = RTReqQueueCallEx(pThis->hReqQCardReaderCmd, NULL, 0, RTREQFLAGS_VOID | RTREQFLAGS_NO_WAIT, 346 (PFNRT)drvCardReaderCmdConnect, 5, 347 pThis, pvUser, pcszCardReaderName, u32ShareMode, u32PreferredProtocols); 348 AssertRC(rc); 349 LogFlowFunc(("LEAVE: %Rrc\n", rc)); 350 return rc; 351 } 352 294 int vrc = RTReqQueueCallEx(pThis->hReqQCardReaderCmd, NULL, 0, RTREQFLAGS_VOID | RTREQFLAGS_NO_WAIT, 295 (PFNRT)drvCardReaderCmdConnect, 5, 296 pThis, pvUser, pcszCardReaderName, u32ShareMode, u32PreferredProtocols); 297 AssertRC(vrc); 298 LogFlowFunc(("LEAVE: %Rrc\n", vrc)); 299 return vrc; 300 } 301 302 /** @implement_interface_method{PDMICARDREADERDOWN,pfnDisconnect} */ 353 303 static DECLCALLBACK(int) drvCardReaderDownDisconnect(PPDMICARDREADERDOWN pInterface, 354 304 void *pvUser, … … 359 309 pvUser, u32Disposition)); 360 310 PUSBCARDREADER pThis = RT_FROM_MEMBER(pInterface, USBCARDREADER, ICardReaderDown); 361 int rc = RTReqQueueCallEx(pThis->hReqQCardReaderCmd, NULL, 0, RTREQFLAGS_VOID | RTREQFLAGS_NO_WAIT, 362 (PFNRT)drvCardReaderCmdDisconnect, 3, 363 pThis, pvUser, u32Disposition); 364 AssertRC(rc); 365 LogFlowFunc(("LEAVE: %Rrc\n", rc)); 366 return rc; 367 } 368 311 int vrc = RTReqQueueCallEx(pThis->hReqQCardReaderCmd, NULL, 0, RTREQFLAGS_VOID | RTREQFLAGS_NO_WAIT, 312 (PFNRT)drvCardReaderCmdDisconnect, 3, 313 pThis, pvUser, u32Disposition); 314 AssertRC(vrc); 315 LogFlowFunc(("LEAVE: %Rrc\n", vrc)); 316 return vrc; 317 } 318 319 /** @implement_interface_method{PDMICARDREADERDOWN,pfnEstablishContext} */ 369 320 static DECLCALLBACK(int) drvCardReaderDownEstablishContext(PPDMICARDREADERDOWN pInterface) 370 321 { … … 372 323 LogFlowFunc(("ENTER:\n")); 373 324 PUSBCARDREADER pThis = RT_FROM_MEMBER(pInterface, USBCARDREADER, ICardReaderDown); 374 int rc = RTReqQueueCallEx(pThis->hReqQCardReaderCmd, NULL, 0, RTREQFLAGS_VOID | RTREQFLAGS_NO_WAIT, 375 (PFNRT)drvCardReaderCmdEstablishContext, 1, 376 pThis); 377 AssertRC(rc); 378 LogFlowFunc(("LEAVE: %Rrc\n", rc)); 379 return rc; 380 } 381 325 int vrc = RTReqQueueCallEx(pThis->hReqQCardReaderCmd, NULL, 0, RTREQFLAGS_VOID | RTREQFLAGS_NO_WAIT, 326 (PFNRT)drvCardReaderCmdEstablishContext, 1, 327 pThis); 328 AssertRC(vrc); 329 LogFlowFunc(("LEAVE: %Rrc\n", vrc)); 330 return vrc; 331 } 332 333 /** @implement_interface_method{PDMICARDREADERDOWN,pfnReleaseContext} */ 382 334 static DECLCALLBACK(int) drvCardReaderDownReleaseContext(PPDMICARDREADERDOWN pInterface, 383 335 void *pvUser) 384 336 { 385 337 AssertPtrReturn(pInterface, VERR_INVALID_PARAMETER); 386 LogFlowFunc(("ENTER: pvUser:%p\n", 387 pvUser)); 338 LogFlowFunc(("ENTER: pvUser:%p\n", pvUser)); 388 339 PUSBCARDREADER pThis = RT_FROM_MEMBER(pInterface, USBCARDREADER, ICardReaderDown); 340 389 341 /** @todo Device calls this when the driver already destroyed. */ 390 342 if (pThis->hReqQCardReaderCmd == NIL_RTREQQUEUE) … … 394 346 } 395 347 396 int rc = RTReqQueueCallEx(pThis->hReqQCardReaderCmd, NULL, 0, RTREQFLAGS_VOID | RTREQFLAGS_NO_WAIT, 397 (PFNRT)drvCardReaderCmdReleaseContext, 2, 398 pThis, pvUser); 399 AssertRC(rc); 400 LogFlowFunc(("LEAVE: %Rrc\n", rc)); 401 return rc; 402 } 403 348 int vrc = RTReqQueueCallEx(pThis->hReqQCardReaderCmd, NULL, 0, RTREQFLAGS_VOID | RTREQFLAGS_NO_WAIT, 349 (PFNRT)drvCardReaderCmdReleaseContext, 2, 350 pThis, pvUser); 351 AssertRC(vrc); 352 LogFlowFunc(("LEAVE: %Rrc\n", vrc)); 353 return vrc; 354 } 355 356 /** @implement_interface_method{PDMICARDREADERDOWN,pfnStatus} */ 404 357 static DECLCALLBACK(int) drvCardReaderDownStatus(PPDMICARDREADERDOWN pInterface, 405 358 void *pvUser, … … 413 366 NOREF(cbAtrLen); 414 367 PUSBCARDREADER pThis = RT_FROM_MEMBER(pInterface, USBCARDREADER, ICardReaderDown); 415 int rc = RTReqQueueCallEx(pThis->hReqQCardReaderCmd, NULL, 0, RTREQFLAGS_VOID | RTREQFLAGS_NO_WAIT, 416 (PFNRT)drvCardReaderCmdStatus, 2, 417 pThis, pvUser); 418 AssertRC(rc); 419 LogFlowFunc(("LEAVE: %Rrc\n", rc)); 420 return rc; 421 } 422 368 int vrc = RTReqQueueCallEx(pThis->hReqQCardReaderCmd, NULL, 0, RTREQFLAGS_VOID | RTREQFLAGS_NO_WAIT, 369 (PFNRT)drvCardReaderCmdStatus, 2, 370 pThis, pvUser); 371 AssertRC(vrc); 372 LogFlowFunc(("LEAVE: %Rrc\n", vrc)); 373 return vrc; 374 } 375 376 /** @implement_interface_method{PDMICARDREADERDOWN,pfnStatusChange} */ 423 377 static DECLCALLBACK(int) drvCardReaderDownGetStatusChange(PPDMICARDREADERDOWN pInterface, 424 378 void *pvUser, … … 431 385 pvUser, u32Timeout, cReaderStats)); 432 386 PUSBCARDREADER pThis = RT_FROM_MEMBER(pInterface, USBCARDREADER, ICardReaderDown); 433 int rc = RTReqQueueCallEx(pThis->hReqQCardReaderCmd, NULL, 0, RTREQFLAGS_VOID | RTREQFLAGS_NO_WAIT, 434 (PFNRT)drvCardReaderCmdStatusChange, 5, 435 pThis, pvUser, u32Timeout, paReaderStats, cReaderStats); 436 AssertRC(rc); 437 LogFlowFunc(("LEAVE: %Rrc\n", rc)); 438 return rc; 439 } 440 387 int vrc = RTReqQueueCallEx(pThis->hReqQCardReaderCmd, NULL, 0, RTREQFLAGS_VOID | RTREQFLAGS_NO_WAIT, 388 (PFNRT)drvCardReaderCmdStatusChange, 5, 389 pThis, pvUser, u32Timeout, paReaderStats, cReaderStats); 390 AssertRC(vrc); 391 LogFlowFunc(("LEAVE: %Rrc\n", vrc)); 392 return vrc; 393 } 394 395 /** @implement_interface_method{PDMICARDREADERDOWN,pfnBeginTransaction} */ 441 396 static DECLCALLBACK(int) drvCardReaderDownBeginTransaction(PPDMICARDREADERDOWN pInterface, 442 397 void *pvUser) … … 447 402 pvUser)); 448 403 PUSBCARDREADER pThis = RT_FROM_MEMBER(pInterface, USBCARDREADER, ICardReaderDown); NOREF(pThis); 449 int rc = VERR_NOT_SUPPORTED; 450 AssertRC(rc); 451 LogFlowFunc(("LEAVE: %Rrc\n", rc)); 452 return rc; 453 } 454 404 int vrc = VERR_NOT_SUPPORTED; 405 AssertRC(vrc); 406 LogFlowFunc(("LEAVE: %Rrc\n", vrc)); 407 return vrc; 408 } 409 410 /** @implement_interface_method{PDMICARDREADERDOWN,pfnEndTransaction} */ 455 411 static DECLCALLBACK(int) drvCardReaderDownEndTransaction(PPDMICARDREADERDOWN pInterface, 456 412 void *pvUser, … … 462 418 pvUser, u32Disposition)); 463 419 PUSBCARDREADER pThis = RT_FROM_MEMBER(pInterface, USBCARDREADER, ICardReaderDown); NOREF(pThis); 464 int rc = VERR_NOT_SUPPORTED; 465 AssertRC(rc); 466 LogFlowFunc(("LEAVE: %Rrc\n", rc)); 467 return rc; 468 } 469 420 int vrc = VERR_NOT_SUPPORTED; 421 AssertRC(vrc); 422 LogFlowFunc(("LEAVE: %Rrc\n", vrc)); 423 return vrc; 424 } 425 426 /** @implement_interface_method{PDMICARDREADERDOWN,pfnTransmit} */ 470 427 static DECLCALLBACK(int) drvCardReaderDownTransmit(PPDMICARDREADERDOWN pInterface, 471 428 void *pvUser, 472 const PDMICARDREADER_IO_REQUEST *p ioSendRequest,473 const uint8_t *p u8SendBuffer,429 const PDMICARDREADER_IO_REQUEST *pIoSendRequest, 430 const uint8_t *pbSendBuffer, 474 431 uint32_t cbSendBuffer, 475 432 uint32_t cbRecvBuffer) 476 433 { 477 434 AssertPtrReturn(pInterface, VERR_INVALID_PARAMETER); 478 LogFlowFunc(("ENTER: pvUser:%p, p ioSendRequest:%p, pu8SendBuffer:%p, cbSendBuffer:%d, cbRecvBuffer:%d\n",479 pvUser, p ioSendRequest, pu8SendBuffer, cbSendBuffer, cbRecvBuffer));435 LogFlowFunc(("ENTER: pvUser:%p, pIoSendRequest:%p, pbSendBuffer:%p, cbSendBuffer:%d, cbRecvBuffer:%d\n", 436 pvUser, pIoSendRequest, pbSendBuffer, cbSendBuffer, cbRecvBuffer)); 480 437 PUSBCARDREADER pThis = RT_FROM_MEMBER(pInterface, USBCARDREADER, ICardReaderDown); 481 uint8_t *p u8SendBufferCopy = NULL;482 if ( p u8SendBuffer438 uint8_t *pbSendBufferCopy = NULL; 439 if ( pbSendBuffer 483 440 && cbSendBuffer) 484 441 { 485 pu8SendBufferCopy = (uint8_t *)RTMemDup(pu8SendBuffer, cbSendBuffer); 486 if (!pu8SendBufferCopy) 487 { 442 pbSendBufferCopy = (uint8_t *)RTMemDup(pbSendBuffer, cbSendBuffer); 443 if (!pbSendBufferCopy) 444 return VERR_NO_MEMORY; 445 } 446 PDMICARDREADER_IO_REQUEST *pIoSendRequestCopy = NULL; 447 if (pIoSendRequest) 448 { 449 pIoSendRequestCopy = (PDMICARDREADER_IO_REQUEST *)RTMemDup(pIoSendRequest, pIoSendRequest->cbPciLength); 450 if (!pIoSendRequestCopy) 451 { 452 RTMemFree(pbSendBufferCopy); 488 453 return VERR_NO_MEMORY; 489 454 } 490 455 } 491 PDMICARDREADER_IO_REQUEST *pioSendRequestCopy = NULL; 492 if (pioSendRequest) 493 { 494 pioSendRequestCopy = (PDMICARDREADER_IO_REQUEST *)RTMemDup(pioSendRequest, pioSendRequest->cbPciLength); 495 if (!pioSendRequestCopy) 496 { 497 RTMemFree(pu8SendBufferCopy); 498 return VERR_NO_MEMORY; 499 } 500 } 501 int rc = RTReqQueueCallEx(pThis->hReqQCardReaderCmd, NULL, 0,RTREQFLAGS_VOID | RTREQFLAGS_NO_WAIT, 502 (PFNRT)drvCardReaderCmdTransmit, 6, 503 pThis, pvUser, pioSendRequestCopy, pu8SendBufferCopy, cbSendBuffer, cbRecvBuffer); 504 AssertRC(rc); 505 LogFlowFunc(("LEAVE: %Rrc\n", rc)); 506 return rc; 507 } 508 456 int vrc = RTReqQueueCallEx(pThis->hReqQCardReaderCmd, NULL, 0,RTREQFLAGS_VOID | RTREQFLAGS_NO_WAIT, 457 (PFNRT)drvCardReaderCmdTransmit, 6, 458 pThis, pvUser, pIoSendRequestCopy, pbSendBufferCopy, cbSendBuffer, cbRecvBuffer); 459 AssertRC(vrc); 460 LogFlowFunc(("LEAVE: %Rrc\n", vrc)); 461 return vrc; 462 } 463 464 /** @implement_interface_method{PDMICARDREADERDOWN,pfnGetAttr} */ 509 465 static DECLCALLBACK(int) drvCardReaderDownGetAttr(PPDMICARDREADERDOWN pInterface, 510 466 void *pvUser, … … 516 472 pvUser, u32AttribId, cbAttrib)); 517 473 PUSBCARDREADER pThis = RT_FROM_MEMBER(pInterface, USBCARDREADER, ICardReaderDown); 518 int rc = RTReqQueueCallEx(pThis->hReqQCardReaderCmd, NULL, 0, RTREQFLAGS_VOID | RTREQFLAGS_NO_WAIT, 519 (PFNRT)drvCardReaderCmdGetAttr, 4, 520 pThis, pvUser, u32AttribId, cbAttrib); 521 AssertRC(rc); 522 LogFlowFunc(("LEAVE: %Rrc\n", rc)); 523 return rc; 524 } 525 474 int vrc = RTReqQueueCallEx(pThis->hReqQCardReaderCmd, NULL, 0, RTREQFLAGS_VOID | RTREQFLAGS_NO_WAIT, 475 (PFNRT)drvCardReaderCmdGetAttr, 4, 476 pThis, pvUser, u32AttribId, cbAttrib); 477 AssertRC(vrc); 478 LogFlowFunc(("LEAVE: %Rrc\n", vrc)); 479 return vrc; 480 } 481 482 /** @implement_interface_method{PDMICARDREADERDOWN,pfnSetAttr} */ 526 483 static DECLCALLBACK(int) drvCardReaderDownSetAttr(PPDMICARDREADERDOWN pInterface, 527 484 void *pvUser, … … 541 498 AssertPtrReturn(pvAttribCopy, VERR_NO_MEMORY); 542 499 } 543 int rc = RTReqQueueCallEx(pThis->hReqQCardReaderCmd, NULL, 0, RTREQFLAGS_VOID | RTREQFLAGS_NO_WAIT, 544 (PFNRT)drvCardReaderCmdSetAttr, 5, 545 pThis, pvUser, u32AttribId, pvAttribCopy, cbAttrib); 546 AssertRC(rc); 547 LogFlowFunc(("LEAVE: %Rrc\n", rc)); 548 return rc; 549 } 550 500 int vrc = RTReqQueueCallEx(pThis->hReqQCardReaderCmd, NULL, 0, RTREQFLAGS_VOID | RTREQFLAGS_NO_WAIT, 501 (PFNRT)drvCardReaderCmdSetAttr, 5, 502 pThis, pvUser, u32AttribId, pvAttribCopy, cbAttrib); 503 AssertRC(vrc); 504 LogFlowFunc(("LEAVE: %Rrc\n", vrc)); 505 return vrc; 506 } 507 508 /** @implement_interface_method{PDMICARDREADERDOWN,pfnControl} */ 551 509 static DECLCALLBACK(int) drvCardReaderDownControl(PPDMICARDREADERDOWN pInterface, 552 510 void *pvUser, … … 567 525 AssertReturn(pvInBufferCopy, VERR_NO_MEMORY); 568 526 } 569 int rc = RTReqQueueCallEx(pThis->hReqQCardReaderCmd, NULL, 0, RTREQFLAGS_VOID | RTREQFLAGS_NO_WAIT,570 (PFNRT)drvCardReaderCmdControl, 6,571 pThis, pvUser, u32ControlCode, pvInBufferCopy, cbInBuffer, cbOutBuffer);572 AssertRC( rc);573 LogFlowFunc(("LEAVE: %Rrc\n", rc));574 return rc;527 int vrc = RTReqQueueCallEx(pThis->hReqQCardReaderCmd, NULL, 0, RTREQFLAGS_VOID | RTREQFLAGS_NO_WAIT, 528 (PFNRT)drvCardReaderCmdControl, 6, 529 pThis, pvUser, u32ControlCode, pvInBufferCopy, cbInBuffer, cbOutBuffer); 530 AssertRC(vrc); 531 LogFlowFunc(("LEAVE: %Rrc\n", vrc)); 532 return vrc; 575 533 } 576 534 … … 581 539 static DECLCALLBACK(int) drvCardReaderThreadCmd(PPDMDRVINS pDrvIns, PPDMTHREAD pThread) 582 540 { 583 int rc = VINF_SUCCESS;584 541 PUSBCARDREADER pThis = PDMINS_2_DATA(pDrvIns, PUSBCARDREADER); 585 542 … … 592 549 } 593 550 551 int vrc = VINF_SUCCESS; 594 552 while (pThread->enmState == PDMTHREADSTATE_RUNNING) 595 553 { 596 rc = RTReqQueueProcess(pThis->hReqQCardReaderCmd, RT_INDEFINITE_WAIT); 597 598 AssertMsg(rc == VWRN_STATE_CHANGED, 599 ("Left RTReqProcess and error code is not VWRN_STATE_CHANGED rc=%Rrc\n", 600 rc)); 601 } 602 603 LogFlowFunc(("LEAVE: %Rrc\n", rc)); 604 return rc; 554 vrc = RTReqQueueProcess(pThis->hReqQCardReaderCmd, RT_INDEFINITE_WAIT); 555 556 AssertMsg(vrc == VWRN_STATE_CHANGED, ("Left RTReqProcess and error code is not VWRN_STATE_CHANGED vrc=%Rrc\n", vrc)); 557 } 558 559 LogFlowFunc(("LEAVE: %Rrc\n", vrc)); 560 return vrc; 605 561 } 606 562 … … 621 577 622 578 PRTREQ pReq; 623 int rc = RTReqQueueCall(pThis->hReqQCardReaderCmd, &pReq, 10000, (PFNRT)drvCardReaderWakeupFunc, 1, pThis);624 AssertMsgRC( rc, ("Inserting request into queue failed rc=%Rrc\n",rc));625 626 if (RT_SUCCESS( rc))579 int vrc = RTReqQueueCall(pThis->hReqQCardReaderCmd, &pReq, 10000, (PFNRT)drvCardReaderWakeupFunc, 1, pThis); 580 AssertMsgRC(vrc, ("Inserting request into queue failed vrc=%Rrc\n", vrc)); 581 582 if (RT_SUCCESS(vrc)) 627 583 RTReqRelease(pReq); 628 584 /** @todo handle VERR_TIMEOUT */ 629 585 630 return rc;586 return vrc; 631 587 } 632 588 … … 708 664 int UsbCardReader::vrdeSCardRequest(void *pvUser, uint32_t u32Function, const void *pvData, uint32_t cbData) 709 665 { 710 int rc = mParent->i_consoleVRDPServer()->SCardRequest(pvUser, u32Function, pvData, cbData);711 LogFlowFunc(("%d %Rrc\n", u32Function, rc));712 return rc;666 int vrc = mParent->i_consoleVRDPServer()->SCardRequest(pvUser, u32Function, pvData, cbData); 667 LogFlowFunc(("%d %Rrc\n", u32Function, vrc)); 668 return vrc; 713 669 } 714 670 … … 716 672 { 717 673 RT_NOREF(cbData); 718 int rc = VINF_SUCCESS;674 int vrc = VINF_SUCCESS; 719 675 720 676 switch (u32Id) … … 727 683 LogFlowFunc(("[%d,%d]\n", p->u32ClientId, p->u32DeviceId)); 728 684 729 /* Add this remote instance, which allow access to card readers attached to the client, to the list. 730 * @todo currently only one device is allowed. 731 */ 685 /* Add this remote instance, which allow access to card readers attached to the client, to the list. */ 686 /** @todo currently only one device is allowed. */ 732 687 if (m_pRemote) 733 688 { 734 689 AssertFailed(); 735 rc = VERR_NOT_SUPPORTED;690 vrc = VERR_NOT_SUPPORTED; 736 691 break; 737 692 } … … 739 694 if (pRemote == NULL) 740 695 { 741 rc = VERR_NO_MEMORY;696 vrc = VERR_NO_MEMORY; 742 697 break; 743 698 } … … 754 709 req.u32DeviceId = m_pRemote->u32DeviceId; 755 710 756 rc = vrdeSCardRequest(m_pRemote, VRDE_SCARD_FN_ESTABLISHCONTEXT, &req, sizeof(req));711 vrc = vrdeSCardRequest(m_pRemote, VRDE_SCARD_FN_ESTABLISHCONTEXT, &req, sizeof(req)); 757 712 758 713 LogFlowFunc(("sent ESTABLISHCONTEXT\n")); … … 770 725 771 726 default: 772 rc = VERR_INVALID_PARAMETER;727 vrc = VERR_INVALID_PARAMETER; 773 728 AssertFailed(); 774 729 break; 775 730 } 776 731 777 return rc;732 return vrc; 778 733 } 779 734 … … 781 736 { 782 737 RT_NOREF(cbData); 783 int rc = VINF_SUCCESS; 784 785 LogFlowFunc(("%Rrc %p %u %p %u\n", 786 rcRequest, pvUser, u32Function, pvData, cbData)); 738 int vrc = VINF_SUCCESS; 739 740 LogFlowFunc(("%Rrc %p %u %p %u\n", rcRequest, pvUser, u32Function, pvData, cbData)); 787 741 788 742 switch (u32Function) … … 808 762 req.Context = pRemote->context; 809 763 810 rc = vrdeSCardRequest(pRemote, VRDE_SCARD_FN_LISTREADERS, &req, sizeof(req));764 vrc = vrdeSCardRequest(pRemote, VRDE_SCARD_FN_LISTREADERS, &req, sizeof(req)); 811 765 } 812 766 } break; … … 1247 1201 default: 1248 1202 AssertFailed(); 1249 rc = VERR_INVALID_PARAMETER;1203 vrc = VERR_INVALID_PARAMETER; 1250 1204 break; 1251 1205 } 1252 1206 1253 return rc;1207 return vrc; 1254 1208 } 1255 1209 … … 1270 1224 AssertReturn(pDrv == mpDrv, VERR_NOT_SUPPORTED); 1271 1225 1272 int rc = VINF_SUCCESS;1226 int vrc = VINF_SUCCESS; 1273 1227 1274 1228 if ( !m_pRemote … … 1293 1247 req.Context = m_pRemote->context; 1294 1248 1295 rc = vrdeSCardRequest(pCtx, VRDE_SCARD_FN_RELEASECONTEXT, &req, sizeof(req)); 1296 1297 if (RT_FAILURE(rc)) 1298 { 1249 vrc = vrdeSCardRequest(pCtx, VRDE_SCARD_FN_RELEASECONTEXT, &req, sizeof(req)); 1250 if (RT_FAILURE(vrc)) 1299 1251 RTMemFree(pCtx); 1300 }1301 1252 else 1302 {1303 1253 m_pRemote->fContext = false; 1304 }1305 1254 } 1306 1255 } 1307 1256 1308 return rc;1257 return vrc; 1309 1258 } 1310 1259 … … 1317 1266 AssertReturn(pDrv == mpDrv, VERR_NOT_SUPPORTED); 1318 1267 1319 int rc = VINF_SUCCESS; 1320 1268 int vrc; 1321 1269 if ( !m_pRemote 1322 1270 || !m_pRemote->fContext 1323 1271 || !m_pRemote->reader.fAvailable) 1324 { 1325 rc = mpDrv->pICardReaderUp->pfnSetStatusChange(mpDrv->pICardReaderUp, 1326 pvUser, 1327 VRDE_SCARD_E_NO_SMARTCARD, 1328 paReaderStats, 1329 cReaderStats); 1330 } 1272 vrc = mpDrv->pICardReaderUp->pfnSetStatusChange(mpDrv->pICardReaderUp, 1273 pvUser, 1274 VRDE_SCARD_E_NO_SMARTCARD, 1275 paReaderStats, 1276 cReaderStats); 1331 1277 else 1332 1278 { 1333 1279 UCRREQCTX *pCtx = (UCRREQCTX *)RTMemAlloc(sizeof(UCRREQCTX)); 1334 1280 if (!pCtx) 1335 { 1336 rc = mpDrv->pICardReaderUp->pfnSetStatusChange(mpDrv->pICardReaderUp, 1337 pvUser, 1338 VRDE_SCARD_E_NO_MEMORY, 1339 paReaderStats, 1340 cReaderStats); 1341 } 1281 vrc = mpDrv->pICardReaderUp->pfnSetStatusChange(mpDrv->pICardReaderUp, 1282 pvUser, 1283 VRDE_SCARD_E_NO_MEMORY, 1284 paReaderStats, 1285 cReaderStats); 1342 1286 else 1343 1287 { … … 1355 1299 req.aReaderStates[0].u32CurrentState = paReaderStats[0].u32CurrentState; 1356 1300 1357 rc = vrdeSCardRequest(pCtx, VRDE_SCARD_FN_GETSTATUSCHANGE, &req, sizeof(req)); 1358 1359 if (RT_FAILURE(rc)) 1360 { 1301 vrc = vrdeSCardRequest(pCtx, VRDE_SCARD_FN_GETSTATUSCHANGE, &req, sizeof(req)); 1302 if (RT_FAILURE(vrc)) 1361 1303 RTMemFree(pCtx); 1362 }1363 1304 } 1364 1305 } 1365 1306 1366 return rc;1307 return vrc; 1367 1308 } 1368 1309 … … 1376 1317 AssertReturn(pDrv == mpDrv, VERR_NOT_SUPPORTED); 1377 1318 1378 int rc = VINF_SUCCESS; 1379 1319 int vrc; 1380 1320 if ( !m_pRemote 1381 1321 || !m_pRemote->fContext 1382 1322 || !m_pRemote->reader.fAvailable) 1383 { 1384 rc = mpDrv->pICardReaderUp->pfnConnect(mpDrv->pICardReaderUp, 1385 pvUser, 1386 VRDE_SCARD_E_NO_SMARTCARD, 1387 VRDE_SCARD_PROTOCOL_T0); 1388 } 1323 vrc = mpDrv->pICardReaderUp->pfnConnect(mpDrv->pICardReaderUp, 1324 pvUser, 1325 VRDE_SCARD_E_NO_SMARTCARD, 1326 VRDE_SCARD_PROTOCOL_T0); 1389 1327 else 1390 1328 { 1391 1329 UCRREQCTX *pCtx = (UCRREQCTX *)RTMemAlloc(sizeof(UCRREQCTX)); 1392 1330 if (!pCtx) 1393 { 1394 rc = mpDrv->pICardReaderUp->pfnConnect(mpDrv->pICardReaderUp, 1395 pvUser, 1396 VRDE_SCARD_E_NO_MEMORY, 1397 VRDE_SCARD_PROTOCOL_T0); 1398 } 1331 vrc = mpDrv->pICardReaderUp->pfnConnect(mpDrv->pICardReaderUp, 1332 pvUser, 1333 VRDE_SCARD_E_NO_MEMORY, 1334 VRDE_SCARD_PROTOCOL_T0); 1399 1335 else 1400 1336 { … … 1409 1345 req.u32PreferredProtocols = u32PreferredProtocols; 1410 1346 1411 rc = vrdeSCardRequest(pCtx, VRDE_SCARD_FN_CONNECT, &req, sizeof(req)); 1412 1413 if (RT_FAILURE(rc)) 1414 { 1347 vrc = vrdeSCardRequest(pCtx, VRDE_SCARD_FN_CONNECT, &req, sizeof(req)); 1348 if (RT_FAILURE(vrc)) 1415 1349 RTMemFree(pCtx); 1416 }1417 1350 } 1418 1351 } 1419 1352 1420 return rc;1353 return vrc; 1421 1354 } 1422 1355 … … 1427 1360 AssertReturn(pDrv == mpDrv, VERR_NOT_SUPPORTED); 1428 1361 1429 int rc = VINF_SUCCESS; 1430 1362 int vrc; 1431 1363 if ( !m_pRemote 1432 1364 || !m_pRemote->fContext 1433 1365 || !m_pRemote->reader.fAvailable 1434 1366 || !m_pRemote->reader.fHandle) 1435 { 1436 rc = mpDrv->pICardReaderUp->pfnDisconnect(mpDrv->pICardReaderUp, 1437 pvUser, 1438 VRDE_SCARD_E_NO_SMARTCARD); 1439 } 1367 vrc = mpDrv->pICardReaderUp->pfnDisconnect(mpDrv->pICardReaderUp, 1368 pvUser, 1369 VRDE_SCARD_E_NO_SMARTCARD); 1440 1370 else 1441 1371 { 1442 1372 UCRREQCTX *pCtx = (UCRREQCTX *)RTMemAlloc(sizeof(UCRREQCTX)); 1443 1373 if (!pCtx) 1444 { 1445 rc = mpDrv->pICardReaderUp->pfnDisconnect(mpDrv->pICardReaderUp, 1446 pvUser, 1447 VRDE_SCARD_E_NO_MEMORY); 1448 } 1374 vrc = mpDrv->pICardReaderUp->pfnDisconnect(mpDrv->pICardReaderUp, 1375 pvUser, 1376 VRDE_SCARD_E_NO_MEMORY); 1449 1377 else 1450 1378 { … … 1457 1385 req.u32Disposition = u32Mode; 1458 1386 1459 rc = vrdeSCardRequest(pCtx, VRDE_SCARD_FN_DISCONNECT, &req, sizeof(req)); 1460 1461 if (RT_FAILURE(rc)) 1462 { 1387 vrc = vrdeSCardRequest(pCtx, VRDE_SCARD_FN_DISCONNECT, &req, sizeof(req)); 1388 if (RT_FAILURE(vrc)) 1463 1389 RTMemFree(pCtx); 1464 }1465 1390 else 1466 {1467 1391 m_pRemote->reader.fHandle = false; 1468 }1469 1392 } 1470 1393 } 1471 1394 1472 return rc;1395 return vrc; 1473 1396 } 1474 1397 … … 1478 1401 AssertReturn(pDrv == mpDrv, VERR_NOT_SUPPORTED); 1479 1402 1480 int rc = VINF_SUCCESS; 1481 1403 int vrc; 1482 1404 if ( !m_pRemote 1483 1405 || !m_pRemote->fContext 1484 1406 || !m_pRemote->reader.fAvailable 1485 1407 || !m_pRemote->reader.fHandle) 1486 { 1487 rc = mpDrv->pICardReaderUp->pfnStatus(mpDrv->pICardReaderUp, 1488 pvUser, 1489 VRDE_SCARD_E_NO_SMARTCARD, 1490 /* pszReaderName */ NULL, 1491 /* cchReaderName */ 0, 1492 /* u32CardState */ 0, 1493 /* u32Protocol */ 0, 1494 /* pu8Atr */ 0, 1495 /* cbAtr */ 0); 1496 } 1408 vrc = mpDrv->pICardReaderUp->pfnStatus(mpDrv->pICardReaderUp, 1409 pvUser, 1410 VRDE_SCARD_E_NO_SMARTCARD, 1411 /* pszReaderName */ NULL, 1412 /* cchReaderName */ 0, 1413 /* u32CardState */ 0, 1414 /* u32Protocol */ 0, 1415 /* pu8Atr */ 0, 1416 /* cbAtr */ 0); 1497 1417 else 1498 1418 { 1499 1419 UCRREQCTX *pCtx = (UCRREQCTX *)RTMemAlloc(sizeof(UCRREQCTX)); 1500 1420 if (!pCtx) 1501 { 1502 rc = mpDrv->pICardReaderUp->pfnStatus(mpDrv->pICardReaderUp, 1503 pvUser, 1504 VRDE_SCARD_E_NO_MEMORY, 1505 /* pszReaderName */ NULL, 1506 /* cchReaderName */ 0, 1507 /* u32CardState */ 0, 1508 /* u32Protocol */ 0, 1509 /* pu8Atr */ 0, 1510 /* cbAtr */ 0); 1511 } 1421 vrc = mpDrv->pICardReaderUp->pfnStatus(mpDrv->pICardReaderUp, 1422 pvUser, 1423 VRDE_SCARD_E_NO_MEMORY, 1424 /* pszReaderName */ NULL, 1425 /* cchReaderName */ 0, 1426 /* u32CardState */ 0, 1427 /* u32Protocol */ 0, 1428 /* pu8Atr */ 0, 1429 /* cbAtr */ 0); 1512 1430 else 1513 1431 { … … 1519 1437 req.hCard = m_pRemote->reader.hCard; 1520 1438 1521 rc = vrdeSCardRequest(pCtx, VRDE_SCARD_FN_STATUS, &req, sizeof(req)); 1522 1523 if (RT_FAILURE(rc)) 1524 { 1439 vrc = vrdeSCardRequest(pCtx, VRDE_SCARD_FN_STATUS, &req, sizeof(req)); 1440 if (RT_FAILURE(vrc)) 1525 1441 RTMemFree(pCtx); 1526 }1527 1442 } 1528 1443 } 1529 1444 1530 return rc;1445 return vrc; 1531 1446 } 1532 1447 1533 1448 int UsbCardReader::Transmit(struct USBCARDREADER *pDrv, 1534 1449 void *pvUser, 1535 PDMICARDREADER_IO_REQUEST *p ioSendRequest,1536 uint8_t *p u8SendBuffer,1450 PDMICARDREADER_IO_REQUEST *pIoSendRequest, 1451 uint8_t *pbSendBuffer, 1537 1452 uint32_t cbSendBuffer, 1538 1453 uint32_t cbRecvBuffer) … … 1540 1455 AssertReturn(pDrv == mpDrv, VERR_NOT_SUPPORTED); 1541 1456 1542 int rc = VINF_SUCCESS;1457 int vrc = VINF_SUCCESS; 1543 1458 1544 1459 UCRREQCTX *pCtx = NULL; … … 1555 1470 if (rcSCard == VRDE_SCARD_S_SUCCESS) 1556 1471 { 1557 if ( !p ioSendRequest1558 || ( p ioSendRequest->cbPciLength < 2 * sizeof(uint32_t)1559 || p ioSendRequest->cbPciLength > 2 * sizeof(uint32_t) + VRDE_SCARD_MAX_PCI_DATA)1472 if ( !pIoSendRequest 1473 || ( pIoSendRequest->cbPciLength < 2 * sizeof(uint32_t) 1474 || pIoSendRequest->cbPciLength > 2 * sizeof(uint32_t) + VRDE_SCARD_MAX_PCI_DATA) 1560 1475 ) 1561 1476 { … … 1578 1493 Assert(pCtx == NULL); 1579 1494 1580 rc = pDrv->pICardReaderUp->pfnTransmit(pDrv->pICardReaderUp,1581 pvUser,1582 rcSCard,1583 /* pioRecvPci */ NULL,1584 /* pu8RecvBuffer */ NULL,1585 /* cbRecvBuffer*/ 0);1495 vrc = pDrv->pICardReaderUp->pfnTransmit(pDrv->pICardReaderUp, 1496 pvUser, 1497 rcSCard, 1498 /* pioRecvPci */ NULL, 1499 /* pu8RecvBuffer */ NULL, 1500 /* cbRecvBuffer*/ 0); 1586 1501 } 1587 1502 else … … 1594 1509 req.hCard = m_pRemote->reader.hCard; 1595 1510 1596 req.ioSendPci.u32Protocol = p ioSendRequest->u32Protocol;1597 req.ioSendPci.u32PciLength = p ioSendRequest->cbPciLength < 2 * sizeof(uint32_t)?1511 req.ioSendPci.u32Protocol = pIoSendRequest->u32Protocol; 1512 req.ioSendPci.u32PciLength = pIoSendRequest->cbPciLength < 2 * sizeof(uint32_t)? 1598 1513 (uint32_t)(2 * sizeof(uint32_t)): 1599 p ioSendRequest->cbPciLength;1600 Assert(p ioSendRequest->cbPciLength <= VRDE_SCARD_MAX_PCI_DATA + 2 * sizeof(uint32_t));1514 pIoSendRequest->cbPciLength; 1515 Assert(pIoSendRequest->cbPciLength <= VRDE_SCARD_MAX_PCI_DATA + 2 * sizeof(uint32_t)); 1601 1516 memcpy(req.ioSendPci.au8PciData, 1602 (uint8_t *)p ioSendRequest + 2 * sizeof(uint32_t),1517 (uint8_t *)pIoSendRequest + 2 * sizeof(uint32_t), 1603 1518 req.ioSendPci.u32PciLength - 2 * sizeof(uint32_t)); 1604 1519 1605 1520 req.u32SendLength = cbSendBuffer; 1606 req.pu8SendBuffer = p u8SendBuffer;1521 req.pu8SendBuffer = pbSendBuffer; 1607 1522 req.u32RecvLength = cbRecvBuffer; 1608 1523 1609 rc = vrdeSCardRequest(pCtx, VRDE_SCARD_FN_TRANSMIT, &req, sizeof(req)); 1610 1611 if (RT_FAILURE(rc)) 1612 { 1524 vrc = vrdeSCardRequest(pCtx, VRDE_SCARD_FN_TRANSMIT, &req, sizeof(req)); 1525 if (RT_FAILURE(vrc)) 1613 1526 RTMemFree(pCtx); 1614 } 1615 } 1616 1617 return rc; 1527 } 1528 1529 return vrc; 1618 1530 } 1619 1531 … … 1627 1539 AssertReturn(pDrv == mpDrv, VERR_NOT_SUPPORTED); 1628 1540 1629 int rc = VINF_SUCCESS;1541 int vrc = VINF_SUCCESS; 1630 1542 1631 1543 UCRREQCTX *pCtx = NULL; … … 1663 1575 Assert(pCtx == NULL); 1664 1576 1665 rc = pDrv->pICardReaderUp->pfnControl(pDrv->pICardReaderUp,1666 pvUser,1667 rcSCard,1668 u32ControlCode,1669 /* pvOutBuffer */ NULL,1670 /* cbOutBuffer*/ 0);1577 vrc = pDrv->pICardReaderUp->pfnControl(pDrv->pICardReaderUp, 1578 pvUser, 1579 rcSCard, 1580 u32ControlCode, 1581 /* pvOutBuffer */ NULL, 1582 /* cbOutBuffer*/ 0); 1671 1583 } 1672 1584 else … … 1684 1596 req.u32OutBufferSize = cbOutBuffer; 1685 1597 1686 rc = vrdeSCardRequest(pCtx, VRDE_SCARD_FN_CONTROL, &req, sizeof(req)); 1687 1688 if (RT_FAILURE(rc)) 1689 { 1598 vrc = vrdeSCardRequest(pCtx, VRDE_SCARD_FN_CONTROL, &req, sizeof(req)); 1599 if (RT_FAILURE(vrc)) 1690 1600 RTMemFree(pCtx); 1691 } 1692 } 1693 1694 return rc; 1601 } 1602 1603 return vrc; 1695 1604 } 1696 1605 … … 1702 1611 AssertReturn(pDrv == mpDrv, VERR_NOT_SUPPORTED); 1703 1612 1704 int rc = VINF_SUCCESS;1613 int vrc = VINF_SUCCESS; 1705 1614 1706 1615 UCRREQCTX *pCtx = NULL; … … 1756 1665 req.u32AttrLen = cbAttrib; 1757 1666 1758 rc = vrdeSCardRequest(pCtx, VRDE_SCARD_FN_GETATTRIB, &req, sizeof(req)); 1759 1760 if (RT_FAILURE(rc)) 1761 { 1667 vrc = vrdeSCardRequest(pCtx, VRDE_SCARD_FN_GETATTRIB, &req, sizeof(req)); 1668 if (RT_FAILURE(vrc)) 1762 1669 RTMemFree(pCtx); 1763 } 1764 } 1765 1766 return rc; 1670 } 1671 1672 return vrc; 1767 1673 } 1768 1674 … … 1775 1681 AssertReturn(pDrv == mpDrv, VERR_NOT_SUPPORTED); 1776 1682 1777 int rc = VINF_SUCCESS;1683 int vrc = VINF_SUCCESS; 1778 1684 1779 1685 UCRREQCTX *pCtx = NULL; … … 1828 1734 req.pu8Attr = pu8Attrib; 1829 1735 1830 rc = vrdeSCardRequest(pCtx, VRDE_SCARD_FN_SETATTRIB, &req, sizeof(req)); 1831 1832 if (RT_FAILURE(rc)) 1833 { 1736 vrc = vrdeSCardRequest(pCtx, VRDE_SCARD_FN_SETATTRIB, &req, sizeof(req)); 1737 if (RT_FAILURE(vrc)) 1834 1738 RTMemFree(pCtx); 1835 } 1836 } 1837 1838 return rc; 1739 } 1740 1741 return vrc; 1839 1742 } 1840 1743 … … 1868 1771 if (pThis->hReqQCardReaderCmd != NIL_RTREQQUEUE) 1869 1772 { 1870 int rc = RTReqQueueDestroy(pThis->hReqQCardReaderCmd);1871 AssertRC( rc);1773 int vrc = RTReqQueueDestroy(pThis->hReqQCardReaderCmd); 1774 AssertRC(vrc); 1872 1775 pThis->hReqQCardReaderCmd = NIL_RTREQQUEUE; 1873 1776 } … … 1918 1821 1919 1822 /* Command Thread Synchronization primitives */ 1920 int rc = RTReqQueueCreate(&pThis->hReqQCardReaderCmd);1921 AssertLogRelRCReturn( rc,rc);1922 1923 rc = PDMDrvHlpThreadCreate(pDrvIns,1924 &pThis->pThrCardReaderCmd,1925 pThis,1926 drvCardReaderThreadCmd /* worker routine */,1927 drvCardReaderThreadCmdWakeup /* wakeup routine */,1928 128 * _1K, RTTHREADTYPE_IO, "UCRCMD");1929 if (RT_FAILURE( rc))1823 int vrc = RTReqQueueCreate(&pThis->hReqQCardReaderCmd); 1824 AssertLogRelRCReturn(vrc, vrc); 1825 1826 vrc = PDMDrvHlpThreadCreate(pDrvIns, 1827 &pThis->pThrCardReaderCmd, 1828 pThis, 1829 drvCardReaderThreadCmd /* worker routine */, 1830 drvCardReaderThreadCmdWakeup /* wakeup routine */, 1831 128 * _1K, RTTHREADTYPE_IO, "UCRCMD"); 1832 if (RT_FAILURE(vrc)) 1930 1833 { 1931 1834 RTReqQueueDestroy(pThis->hReqQCardReaderCmd); … … 1933 1836 } 1934 1837 1935 LogFlowFunc(("LEAVE: %Rrc\n", rc));1936 return rc;1838 LogFlowFunc(("LEAVE: %Rrc\n", vrc)); 1839 return vrc; 1937 1840 } 1938 1841
Note:
See TracChangeset
for help on using the changeset viewer.