mirror of
https://github.com/reactos/reactos.git
synced 2024-08-19 09:59:44 +00:00
[USBEHCI]
- Fix stack corruption found by msvc - Fix msvc build svn path=/trunk/; revision=55917
This commit is contained in:
parent
ad333c1655
commit
a755140405
|
@ -45,14 +45,14 @@ public:
|
||||||
UCHAR InternalGetPidDirection();
|
UCHAR InternalGetPidDirection();
|
||||||
NTSTATUS BuildControlTransferQueueHead(PQUEUE_HEAD * OutHead);
|
NTSTATUS BuildControlTransferQueueHead(PQUEUE_HEAD * OutHead);
|
||||||
NTSTATUS BuildBulkTransferQueueHead(PQUEUE_HEAD * OutHead);
|
NTSTATUS BuildBulkTransferQueueHead(PQUEUE_HEAD * OutHead);
|
||||||
NTSTATUS CreateDescriptor(PQUEUE_TRANSFER_DESCRIPTOR *OutDescriptor);
|
NTSTATUS STDMETHODCALLTYPE CreateDescriptor(PQUEUE_TRANSFER_DESCRIPTOR *OutDescriptor);
|
||||||
NTSTATUS CreateQueueHead(PQUEUE_HEAD *OutQueueHead);
|
NTSTATUS CreateQueueHead(PQUEUE_HEAD *OutQueueHead);
|
||||||
UCHAR GetDeviceAddress();
|
UCHAR STDMETHODCALLTYPE GetDeviceAddress();
|
||||||
NTSTATUS BuildSetupPacket();
|
NTSTATUS BuildSetupPacket();
|
||||||
NTSTATUS BuildSetupPacketFromURB();
|
NTSTATUS BuildSetupPacketFromURB();
|
||||||
ULONG InternalCalculateTransferLength();
|
ULONG InternalCalculateTransferLength();
|
||||||
NTSTATUS BuildTransferDescriptorChain(IN PQUEUE_HEAD QueueHead, IN PVOID TransferBuffer, IN ULONG TransferBufferLength, IN UCHAR PidCode, IN UCHAR InitialDataToggle, IN PQUEUE_TRANSFER_DESCRIPTOR AlternativeDescriptor, OUT PQUEUE_TRANSFER_DESCRIPTOR * OutFirstDescriptor, OUT PQUEUE_TRANSFER_DESCRIPTOR * OutLastDescriptor, OUT PUCHAR OutDataToggle, OUT PULONG OutTransferBufferOffset);
|
NTSTATUS STDMETHODCALLTYPE BuildTransferDescriptorChain(IN PQUEUE_HEAD QueueHead, IN PVOID TransferBuffer, IN ULONG TransferBufferLength, IN UCHAR PidCode, IN UCHAR InitialDataToggle, OUT PQUEUE_TRANSFER_DESCRIPTOR * OutFirstDescriptor, OUT PQUEUE_TRANSFER_DESCRIPTOR * OutLastDescriptor, OUT PUCHAR OutDataToggle, OUT PULONG OutTransferBufferOffset);
|
||||||
VOID InitDescriptor(IN PQUEUE_TRANSFER_DESCRIPTOR CurrentDescriptor, IN PVOID TransferBuffer, IN ULONG TransferBufferLength, IN UCHAR PidCode, IN UCHAR DataToggle, OUT PULONG OutDescriptorLength);
|
VOID STDMETHODCALLTYPE InitDescriptor(IN PQUEUE_TRANSFER_DESCRIPTOR CurrentDescriptor, IN PVOID TransferBuffer, IN ULONG TransferBufferLength, IN UCHAR PidCode, IN UCHAR DataToggle, OUT PULONG OutDescriptorLength);
|
||||||
VOID DumpQueueHead(IN PQUEUE_HEAD QueueHead);
|
VOID DumpQueueHead(IN PQUEUE_HEAD QueueHead);
|
||||||
|
|
||||||
// constructor / destructor
|
// constructor / destructor
|
||||||
|
@ -565,6 +565,7 @@ CUSBRequest::InternalGetPidDirection()
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
STDMETHODCALLTYPE
|
||||||
CUSBRequest::InitDescriptor(
|
CUSBRequest::InitDescriptor(
|
||||||
IN PQUEUE_TRANSFER_DESCRIPTOR CurrentDescriptor,
|
IN PQUEUE_TRANSFER_DESCRIPTOR CurrentDescriptor,
|
||||||
IN PVOID TransferBuffer,
|
IN PVOID TransferBuffer,
|
||||||
|
@ -673,13 +674,13 @@ CUSBRequest::InitDescriptor(
|
||||||
}
|
}
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
STDMETHODCALLTYPE
|
||||||
CUSBRequest::BuildTransferDescriptorChain(
|
CUSBRequest::BuildTransferDescriptorChain(
|
||||||
IN PQUEUE_HEAD QueueHead,
|
IN PQUEUE_HEAD QueueHead,
|
||||||
IN PVOID TransferBuffer,
|
IN PVOID TransferBuffer,
|
||||||
IN ULONG TransferBufferLength,
|
IN ULONG TransferBufferLength,
|
||||||
IN UCHAR PidCode,
|
IN UCHAR PidCode,
|
||||||
IN UCHAR InitialDataToggle,
|
IN UCHAR InitialDataToggle,
|
||||||
IN PQUEUE_TRANSFER_DESCRIPTOR AlternativeDescriptor,
|
|
||||||
OUT PQUEUE_TRANSFER_DESCRIPTOR * OutFirstDescriptor,
|
OUT PQUEUE_TRANSFER_DESCRIPTOR * OutFirstDescriptor,
|
||||||
OUT PQUEUE_TRANSFER_DESCRIPTOR * OutLastDescriptor,
|
OUT PQUEUE_TRANSFER_DESCRIPTOR * OutLastDescriptor,
|
||||||
OUT PUCHAR OutDataToggle,
|
OUT PUCHAR OutDataToggle,
|
||||||
|
@ -757,15 +758,6 @@ CUSBRequest::BuildTransferDescriptorChain(
|
||||||
//
|
//
|
||||||
LastDescriptor->NextPointer = CurrentDescriptor->PhysicalAddr;
|
LastDescriptor->NextPointer = CurrentDescriptor->PhysicalAddr;
|
||||||
LastDescriptor = CurrentDescriptor;
|
LastDescriptor = CurrentDescriptor;
|
||||||
|
|
||||||
if (AlternativeDescriptor)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// link to alternative next pointer
|
|
||||||
//
|
|
||||||
LastDescriptor->AlternateNextPointer = AlternativeDescriptor->PhysicalAddr;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -929,7 +921,6 @@ CUSBRequest::BuildControlTransferQueueHead(
|
||||||
m_TransferBufferLength,
|
m_TransferBufferLength,
|
||||||
InternalGetPidDirection(),
|
InternalGetPidDirection(),
|
||||||
TRUE,
|
TRUE,
|
||||||
NULL,
|
|
||||||
&FirstDescriptor,
|
&FirstDescriptor,
|
||||||
&LastDescriptor,
|
&LastDescriptor,
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -939,7 +930,12 @@ CUSBRequest::BuildControlTransferQueueHead(
|
||||||
// FIXME handle errors
|
// FIXME handle errors
|
||||||
//
|
//
|
||||||
ASSERT(Status == STATUS_SUCCESS);
|
ASSERT(Status == STATUS_SUCCESS);
|
||||||
ASSERT(DescriptorChainLength == m_TransferBufferLength);
|
if (m_TransferBufferLength != DescriptorChainLength)
|
||||||
|
{
|
||||||
|
DPRINT1("DescriptorChainLength %x\n", DescriptorChainLength);
|
||||||
|
DPRINT1("m_TransferBufferLength %x\n", m_TransferBufferLength);
|
||||||
|
ASSERT(FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// now link the descriptors
|
// now link the descriptors
|
||||||
|
@ -1125,7 +1121,6 @@ CUSBRequest::BuildBulkTransferQueueHead(
|
||||||
MaxTransferLength,
|
MaxTransferLength,
|
||||||
InternalGetPidDirection(),
|
InternalGetPidDirection(),
|
||||||
m_EndpointDescriptor->DataToggle,
|
m_EndpointDescriptor->DataToggle,
|
||||||
NULL,
|
|
||||||
&FirstDescriptor,
|
&FirstDescriptor,
|
||||||
&LastDescriptor,
|
&LastDescriptor,
|
||||||
&m_EndpointDescriptor->DataToggle,
|
&m_EndpointDescriptor->DataToggle,
|
||||||
|
@ -1176,6 +1171,7 @@ CUSBRequest::BuildBulkTransferQueueHead(
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
STDMETHODCALLTYPE
|
||||||
CUSBRequest::CreateDescriptor(
|
CUSBRequest::CreateDescriptor(
|
||||||
PQUEUE_TRANSFER_DESCRIPTOR *OutDescriptor)
|
PQUEUE_TRANSFER_DESCRIPTOR *OutDescriptor)
|
||||||
{
|
{
|
||||||
|
@ -1430,7 +1426,7 @@ CUSBRequest::BuildSetupPacketFromURB()
|
||||||
m_DescriptorPacket->wValue.LowByte = Urb->UrbControlDescriptorRequest.Index;
|
m_DescriptorPacket->wValue.LowByte = Urb->UrbControlDescriptorRequest.Index;
|
||||||
m_DescriptorPacket->wValue.HiByte = Urb->UrbControlDescriptorRequest.DescriptorType;
|
m_DescriptorPacket->wValue.HiByte = Urb->UrbControlDescriptorRequest.DescriptorType;
|
||||||
m_DescriptorPacket->wIndex.W = Urb->UrbControlDescriptorRequest.LanguageId;
|
m_DescriptorPacket->wIndex.W = Urb->UrbControlDescriptorRequest.LanguageId;
|
||||||
m_DescriptorPacket->wLength = Urb->UrbControlDescriptorRequest.TransferBufferLength;
|
m_DescriptorPacket->wLength = (USHORT)Urb->UrbControlDescriptorRequest.TransferBufferLength;
|
||||||
m_DescriptorPacket->bmRequestType.B = 0x80;
|
m_DescriptorPacket->bmRequestType.B = 0x80;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue