Ejemplo n.º 1
0
BOOL OpenContext::StartControlTransfer(LPUKWD_CONTROL_TRANSFER_INFO lpTransferInfo)
{
	MutexLocker lock(mMutex);
	DevicePtr dev (mDevice->GetDeviceList(), lpTransferInfo->lpDevice);
	if (!Validate(dev)) {
		SetLastError(ERROR_INVALID_HANDLE);
		return FALSE;
	}
	ControlTransfer* ct = new (std::nothrow) ControlTransfer(
			this, dev, lpTransferInfo);
	if (!ct) {
		ERROR_MSG((TEXT("USBKWrapperDrv!OpenContext::StartControlTransfer() - failed to create control transfer, aborting\r\n")));
		SetLastError(ERROR_NOT_ENOUGH_MEMORY);
		return FALSE;
	}
	BOOL ret = ct->Start();
	mTransferList->PutTransfer(ct);
	ct = NULL;
	if (!ret) {
		ERROR_MSG((TEXT("USBKWrapperDrv!OpenContext::StartControlTransfer() - failed to start control transfer %d\r\n"), GetLastError()));
		return FALSE;
	}
	// Ownership of ct has passed to the transfer callback
	return TRUE;
}
Ejemplo n.º 2
0
BOOL OpenContext::StartControlTransfer(LPUKWD_CONTROL_TRANSFER_INFO lpTransferInfo)
{
	MutexLocker lock(mMutex);
	DevicePtr dev (mDevice->GetDeviceList(), lpTransferInfo->lpDevice);
	if (!Validate(dev)) {
		SetLastError(ERROR_INVALID_HANDLE);
		return FALSE;
	}

	TRANSFERLIFETIME_MSG((TEXT("USBKWrapperDrv!OpenContext::StartControlTransfer() with ")
		TEXT("bmRequestType 0x%02x, bRequest 0x%02x, wValue 0x%04x, wIndex 0x%04x, wLength %d, flags 0x%08x and size %d\r\n"),
		lpTransferInfo->Header.bmRequestType, lpTransferInfo->Header.bRequest, lpTransferInfo->Header.wValue, 
		lpTransferInfo->Header.wIndex, lpTransferInfo->Header.wLength, lpTransferInfo->dwFlags, 
		lpTransferInfo->dwDataBufferSize));

	// Construct and start the control transfer
	ControlTransfer* ct = new (std::nothrow) ControlTransfer(
			this, dev, lpTransferInfo);
	if (!ct) {
		ERROR_MSG((TEXT("USBKWrapperDrv!OpenContext::StartControlTransfer() - failed to create control transfer, aborting\r\n")));
		SetLastError(ERROR_NOT_ENOUGH_MEMORY);
		return FALSE;
	}
	BOOL ret = ct->Start();
	mTransferList->PutTransfer(ct);
	ct = NULL;
	if (!ret) {
		ERROR_MSG((TEXT("USBKWrapperDrv!OpenContext::StartControlTransfer() - failed to start control transfer %d\r\n"), GetLastError()));
		return FALSE;
	}
	// Ownership of ct has passed to the transfer callback
	return TRUE;
}