OUT PULONG OutDescriptorLength)
{
ULONG Index, Length = 0, PageOffset, BufferLength;
+ PHYSICAL_ADDRESS Address;
//
// init transfer descriptor
Index = 0;
do
{
+ //
+ // get address
+ //
+ Address = MmGetPhysicalAddress(TransferBuffer);
+
//
// use physical address
//
- CurrentDescriptor->BufferPointer[Index] = MmGetPhysicalAddress(TransferBuffer).LowPart;
+ CurrentDescriptor->BufferPointer[Index] = Address.LowPart;
+ CurrentDescriptor->ExtendedBufferPointer[Index] = Address.HighPart;
//
// Get the offset from page size
MaxPacketSize = m_EndpointDescriptor->EndPointDescriptor.wMaxPacketSize;
}
-
do
{
//
SetupDescriptor->Token.Bits.PIDCode = PID_CODE_SETUP_TOKEN;
SetupDescriptor->Token.Bits.TotalBytesToTransfer = sizeof(USB_DEFAULT_PIPE_SETUP_PACKET);
SetupDescriptor->Token.Bits.DataToggle = FALSE;
- SetupDescriptor->BufferPointer[0] = (ULONG)PtrToUlong(m_DescriptorSetupPacket.LowPart);
+ SetupDescriptor->BufferPointer[0] = m_DescriptorSetupPacket.LowPart;
+ SetupDescriptor->ExtendedBufferPointer[0] = m_DescriptorSetupPacket.HighPart;
InsertTailList(&QueueHead->TransferDescriptorListHead, &SetupDescriptor->DescriptorEntry);
QueueHead->Token.Bits.InterruptOnComplete = FALSE;
//
- // FIXME check if that is really needed
+ // store address
//
QueueHead->PhysicalAddr = QueueHeadPhysicalAddress.LowPart;