mirror of
https://github.com/nefarius/ViGEmBus.git
synced 2025-08-10 00:52:17 +00:00
Refactored names
This commit is contained in:
@@ -147,11 +147,11 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetDS4::PdoPrepareHardware()
|
||||
};
|
||||
|
||||
// Initialize HID reports to defaults
|
||||
RtlCopyBytes(this->Report, DefaultHidReport, DS4_REPORT_SIZE);
|
||||
RtlZeroMemory(&this->OutputReport, sizeof(DS4_OUTPUT_REPORT));
|
||||
RtlCopyBytes(this->_Report, DefaultHidReport, DS4_REPORT_SIZE);
|
||||
RtlZeroMemory(&this->_OutputReport, sizeof(DS4_OUTPUT_REPORT));
|
||||
|
||||
// Start pending IRP queue flush timer
|
||||
WdfTimerStart(this->PendingUsbInRequestsTimer, DS4_QUEUE_FLUSH_PERIOD);
|
||||
WdfTimerStart(this->_PendingUsbInRequestsTimer, DS4_QUEUE_FLUSH_PERIOD);
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
@@ -179,7 +179,7 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetDS4::PdoInitContext()
|
||||
status = WdfTimerCreate(
|
||||
&timerConfig,
|
||||
&timerAttribs,
|
||||
&this->PendingUsbInRequestsTimer
|
||||
&this->_PendingUsbInRequestsTimer
|
||||
);
|
||||
if (!NT_SUCCESS(status))
|
||||
{
|
||||
@@ -279,7 +279,7 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetDS4::PdoInitContext()
|
||||
keySerial,
|
||||
&valueName,
|
||||
sizeof(MAC_ADDRESS),
|
||||
&this->TargetMacAddress,
|
||||
&this->_TargetMacAddress,
|
||||
NULL,
|
||||
NULL
|
||||
);
|
||||
@@ -287,23 +287,23 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetDS4::PdoInitContext()
|
||||
TraceEvents(TRACE_LEVEL_INFORMATION,
|
||||
TRACE_DS4,
|
||||
"MAC-Address: %02X:%02X:%02X:%02X:%02X:%02X\n",
|
||||
this->TargetMacAddress.Vendor0,
|
||||
this->TargetMacAddress.Vendor1,
|
||||
this->TargetMacAddress.Vendor2,
|
||||
this->TargetMacAddress.Nic0,
|
||||
this->TargetMacAddress.Nic1,
|
||||
this->TargetMacAddress.Nic2);
|
||||
this->_TargetMacAddress.Vendor0,
|
||||
this->_TargetMacAddress.Vendor1,
|
||||
this->_TargetMacAddress.Vendor2,
|
||||
this->_TargetMacAddress.Nic0,
|
||||
this->_TargetMacAddress.Nic1,
|
||||
this->_TargetMacAddress.Nic2);
|
||||
|
||||
if (status == STATUS_OBJECT_NAME_NOT_FOUND)
|
||||
{
|
||||
GenerateRandomMacAddress(&this->TargetMacAddress);
|
||||
GenerateRandomMacAddress(&this->_TargetMacAddress);
|
||||
|
||||
status = WdfRegistryAssignValue(
|
||||
keySerial,
|
||||
&valueName,
|
||||
REG_BINARY,
|
||||
sizeof(MAC_ADDRESS),
|
||||
static_cast<PVOID>(&this->TargetMacAddress)
|
||||
static_cast<PVOID>(&this->_TargetMacAddress)
|
||||
);
|
||||
if (!NT_SUCCESS(status))
|
||||
{
|
||||
@@ -450,7 +450,7 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetDS4::SelectConfiguration(PURB Urb)
|
||||
void ViGEm::Bus::Targets::EmulationTargetDS4::AbortPipe()
|
||||
{
|
||||
// Higher driver shutting down, emptying PDOs queues
|
||||
WdfTimerStop(this->PendingUsbInRequestsTimer, TRUE);
|
||||
WdfTimerStop(this->_PendingUsbInRequestsTimer, TRUE);
|
||||
}
|
||||
|
||||
NTSTATUS ViGEm::Bus::Targets::EmulationTargetDS4::UsbClassInterface(PURB Urb)
|
||||
@@ -533,12 +533,12 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetDS4::UsbClassInterface(PURB Urb)
|
||||
};
|
||||
|
||||
// Insert (auto-generated) target MAC address into response
|
||||
RtlCopyBytes(Response + 1, &this->TargetMacAddress, sizeof(MAC_ADDRESS));
|
||||
RtlCopyBytes(Response + 1, &this->_TargetMacAddress, sizeof(MAC_ADDRESS));
|
||||
// Adjust byte order
|
||||
ReverseByteArray(Response + 1, sizeof(MAC_ADDRESS));
|
||||
|
||||
// Insert (auto-generated) host MAC address into response
|
||||
RtlCopyBytes(Response + 10, &this->HostMacAddress, sizeof(MAC_ADDRESS));
|
||||
RtlCopyBytes(Response + 10, &this->_HostMacAddress, sizeof(MAC_ADDRESS));
|
||||
// Adjust byte order
|
||||
ReverseByteArray(Response + 10, sizeof(MAC_ADDRESS));
|
||||
|
||||
@@ -998,7 +998,7 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetDS4::UsbBulkOrInterruptTransfer(_UR
|
||||
}
|
||||
|
||||
// Store relevant bytes of buffer in PDO context
|
||||
RtlCopyBytes(&this->OutputReport,
|
||||
RtlCopyBytes(&this->_OutputReport,
|
||||
static_cast<PUCHAR>(pTransfer->TransferBuffer) + DS4_OUTPUT_BUFFER_OFFSET,
|
||||
DS4_OUTPUT_BUFFER_LENGTH);
|
||||
|
||||
@@ -1021,7 +1021,7 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetDS4::UsbBulkOrInterruptTransfer(_UR
|
||||
// Assign values to output buffer
|
||||
notify->Size = sizeof(DS4_REQUEST_NOTIFICATION);
|
||||
notify->SerialNo = this->_SerialNo;
|
||||
notify->Report = this->OutputReport;
|
||||
notify->Report = this->_OutputReport;
|
||||
|
||||
WdfRequestCompleteWithInformation(notifyRequest, status, notify->Size);
|
||||
}
|
||||
@@ -1088,10 +1088,10 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetDS4::SubmitReport(PVOID NewReport)
|
||||
|
||||
/* Copy report to cache and transfer buffer
|
||||
* Skip first byte as it contains the never changing report id */
|
||||
RtlCopyBytes(this->Report + 1, &(static_cast<PDS4_SUBMIT_REPORT>(NewReport))->Report, sizeof(DS4_REPORT));
|
||||
RtlCopyBytes(this->_Report + 1, &(static_cast<PDS4_SUBMIT_REPORT>(NewReport))->Report, sizeof(DS4_REPORT));
|
||||
|
||||
if (Buffer)
|
||||
RtlCopyBytes(Buffer, this->Report, DS4_REPORT_SIZE);
|
||||
RtlCopyBytes(Buffer, this->_Report, DS4_REPORT_SIZE);
|
||||
|
||||
// Complete pending request
|
||||
WdfRequestComplete(usbRequest, status);
|
||||
@@ -1130,7 +1130,7 @@ VOID ViGEm::Bus::Targets::EmulationTargetDS4::PendingUsbRequestsTimerFunc(
|
||||
|
||||
// Copy cached report to transfer buffer
|
||||
if (Buffer)
|
||||
RtlCopyBytes(Buffer, ctx->Report, DS4_REPORT_SIZE);
|
||||
RtlCopyBytes(Buffer, ctx->_Report, DS4_REPORT_SIZE);
|
||||
|
||||
// Complete pending request
|
||||
WdfRequestComplete(usbRequest, status);
|
||||
|
||||
@@ -77,27 +77,27 @@ namespace ViGEm::Bus::Targets
|
||||
//
|
||||
// HID Input Report buffer
|
||||
//
|
||||
UCHAR Report[DS4_REPORT_SIZE];
|
||||
UCHAR _Report[DS4_REPORT_SIZE];
|
||||
|
||||
//
|
||||
// Output report cache
|
||||
//
|
||||
DS4_OUTPUT_REPORT OutputReport;
|
||||
DS4_OUTPUT_REPORT _OutputReport;
|
||||
|
||||
//
|
||||
// Timer for dispatching interrupt transfer
|
||||
//
|
||||
WDFTIMER PendingUsbInRequestsTimer;
|
||||
WDFTIMER _PendingUsbInRequestsTimer;
|
||||
|
||||
//
|
||||
// Auto-generated MAC address of the target device
|
||||
//
|
||||
MAC_ADDRESS TargetMacAddress;
|
||||
MAC_ADDRESS _TargetMacAddress;
|
||||
|
||||
//
|
||||
// Default MAC address of the host (not used)
|
||||
//
|
||||
MAC_ADDRESS HostMacAddress;
|
||||
MAC_ADDRESS _HostMacAddress;
|
||||
|
||||
static EVT_WDF_TIMER PendingUsbRequestsTimerFunc;
|
||||
};
|
||||
|
||||
@@ -232,18 +232,18 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetXUSB::PdoInitContext()
|
||||
|
||||
TraceEvents(TRACE_LEVEL_VERBOSE, TRACE_XUSB, "Initializing XUSB context...");
|
||||
|
||||
RtlZeroMemory(this->Rumble, ARRAYSIZE(this->Rumble));
|
||||
RtlZeroMemory(this->_Rumble, ARRAYSIZE(this->_Rumble));
|
||||
|
||||
// Is later overwritten by actual XInput slot
|
||||
this->LedNumber = -1;
|
||||
this->_LedNumber = -1;
|
||||
|
||||
RtlZeroMemory(&this->Packet, sizeof(XUSB_INTERRUPT_IN_PACKET));
|
||||
RtlZeroMemory(&this->_Packet, sizeof(XUSB_INTERRUPT_IN_PACKET));
|
||||
// Packet size (20 bytes = 0x14)
|
||||
this->Packet.Size = 0x14;
|
||||
this->_Packet.Size = 0x14;
|
||||
|
||||
this->ReportedCapabilities = FALSE;
|
||||
this->_ReportedCapabilities = FALSE;
|
||||
|
||||
this->InterruptInitStage = 0;
|
||||
this->_InterruptInitStage = 0;
|
||||
|
||||
// Allocate blob storage
|
||||
NTSTATUS status = WdfMemoryCreate(
|
||||
@@ -251,7 +251,7 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetXUSB::PdoInitContext()
|
||||
NonPagedPoolNx,
|
||||
XUSB_POOL_TAG,
|
||||
XUSB_BLOB_STORAGE_SIZE,
|
||||
&this->InterruptBlobStorage,
|
||||
&this->_InterruptBlobStorage,
|
||||
reinterpret_cast<PVOID*>(&blobBuffer)
|
||||
);
|
||||
if (!NT_SUCCESS(status))
|
||||
@@ -295,7 +295,7 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetXUSB::PdoInitContext()
|
||||
this->_PdoDevice,
|
||||
&holdingInQueueConfig,
|
||||
WDF_NO_OBJECT_ATTRIBUTES,
|
||||
&this->HoldingUsbInRequests
|
||||
&this->_HoldingUsbInRequests
|
||||
);
|
||||
if (!NT_SUCCESS(status))
|
||||
{
|
||||
@@ -725,18 +725,18 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetXUSB::UsbBulkOrInterruptTransfer(_U
|
||||
TRACE_USBPDO,
|
||||
">> >> >> Incoming request, queuing...");
|
||||
|
||||
auto blobBuffer = static_cast<PUCHAR>(WdfMemoryGetBuffer(this->InterruptBlobStorage, nullptr));
|
||||
auto blobBuffer = static_cast<PUCHAR>(WdfMemoryGetBuffer(this->_InterruptBlobStorage, nullptr));
|
||||
|
||||
if (xusb_is_data_pipe(pTransfer))
|
||||
{
|
||||
//
|
||||
// Send "boot sequence" first, then the actual inputs
|
||||
//
|
||||
switch (this->InterruptInitStage)
|
||||
switch (this->_InterruptInitStage)
|
||||
{
|
||||
case 0:
|
||||
pTransfer->TransferBufferLength = XUSB_INIT_STAGE_SIZE;
|
||||
this->InterruptInitStage++;
|
||||
this->_InterruptInitStage++;
|
||||
RtlCopyMemory(
|
||||
pTransfer->TransferBuffer,
|
||||
&blobBuffer[XUSB_BLOB_00_OFFSET],
|
||||
@@ -745,7 +745,7 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetXUSB::UsbBulkOrInterruptTransfer(_U
|
||||
return STATUS_SUCCESS;
|
||||
case 1:
|
||||
pTransfer->TransferBufferLength = XUSB_INIT_STAGE_SIZE;
|
||||
this->InterruptInitStage++;
|
||||
this->_InterruptInitStage++;
|
||||
RtlCopyMemory(
|
||||
pTransfer->TransferBuffer,
|
||||
&blobBuffer[XUSB_BLOB_01_OFFSET],
|
||||
@@ -754,7 +754,7 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetXUSB::UsbBulkOrInterruptTransfer(_U
|
||||
return STATUS_SUCCESS;
|
||||
case 2:
|
||||
pTransfer->TransferBufferLength = XUSB_INIT_STAGE_SIZE;
|
||||
this->InterruptInitStage++;
|
||||
this->_InterruptInitStage++;
|
||||
RtlCopyMemory(
|
||||
pTransfer->TransferBuffer,
|
||||
&blobBuffer[XUSB_BLOB_02_OFFSET],
|
||||
@@ -763,7 +763,7 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetXUSB::UsbBulkOrInterruptTransfer(_U
|
||||
return STATUS_SUCCESS;
|
||||
case 3:
|
||||
pTransfer->TransferBufferLength = XUSB_INIT_STAGE_SIZE;
|
||||
this->InterruptInitStage++;
|
||||
this->_InterruptInitStage++;
|
||||
RtlCopyMemory(
|
||||
pTransfer->TransferBuffer,
|
||||
&blobBuffer[XUSB_BLOB_03_OFFSET],
|
||||
@@ -772,7 +772,7 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetXUSB::UsbBulkOrInterruptTransfer(_U
|
||||
return STATUS_SUCCESS;
|
||||
case 4:
|
||||
pTransfer->TransferBufferLength = sizeof(XUSB_INTERRUPT_IN_PACKET);
|
||||
this->InterruptInitStage++;
|
||||
this->_InterruptInitStage++;
|
||||
RtlCopyMemory(
|
||||
pTransfer->TransferBuffer,
|
||||
&blobBuffer[XUSB_BLOB_04_OFFSET],
|
||||
@@ -781,7 +781,7 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetXUSB::UsbBulkOrInterruptTransfer(_U
|
||||
return STATUS_SUCCESS;
|
||||
case 5:
|
||||
pTransfer->TransferBufferLength = XUSB_INIT_STAGE_SIZE;
|
||||
this->InterruptInitStage++;
|
||||
this->_InterruptInitStage++;
|
||||
RtlCopyMemory(
|
||||
pTransfer->TransferBuffer,
|
||||
&blobBuffer[XUSB_BLOB_05_OFFSET],
|
||||
@@ -800,7 +800,7 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetXUSB::UsbBulkOrInterruptTransfer(_U
|
||||
|
||||
if (xusb_is_control_pipe(pTransfer))
|
||||
{
|
||||
if (!this->ReportedCapabilities && pTransfer->TransferBufferLength >= XUSB_INIT_STAGE_SIZE)
|
||||
if (!this->_ReportedCapabilities && pTransfer->TransferBufferLength >= XUSB_INIT_STAGE_SIZE)
|
||||
{
|
||||
RtlCopyMemory(
|
||||
pTransfer->TransferBuffer,
|
||||
@@ -808,12 +808,12 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetXUSB::UsbBulkOrInterruptTransfer(_U
|
||||
XUSB_INIT_STAGE_SIZE
|
||||
);
|
||||
|
||||
this->ReportedCapabilities = TRUE;
|
||||
this->_ReportedCapabilities = TRUE;
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
status = WdfRequestForwardToIoQueue(Request, this->HoldingUsbInRequests);
|
||||
status = WdfRequestForwardToIoQueue(Request, this->_HoldingUsbInRequests);
|
||||
|
||||
return (NT_SUCCESS(status)) ? STATUS_PENDING : status;
|
||||
}
|
||||
@@ -839,15 +839,15 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetXUSB::UsbBulkOrInterruptTransfer(_U
|
||||
// extract LED byte to get controller slot
|
||||
if (Buffer[0] == 0x01 && Buffer[1] == 0x03 && Buffer[2] >= 0x02)
|
||||
{
|
||||
if (Buffer[2] == 0x02)this->LedNumber = 0;
|
||||
if (Buffer[2] == 0x03)this->LedNumber = 1;
|
||||
if (Buffer[2] == 0x04)this->LedNumber = 2;
|
||||
if (Buffer[2] == 0x05)this->LedNumber = 3;
|
||||
if (Buffer[2] == 0x02)this->_LedNumber = 0;
|
||||
if (Buffer[2] == 0x03)this->_LedNumber = 1;
|
||||
if (Buffer[2] == 0x04)this->_LedNumber = 2;
|
||||
if (Buffer[2] == 0x05)this->_LedNumber = 3;
|
||||
|
||||
TraceDbg(
|
||||
TRACE_USBPDO,
|
||||
"-- LED Number: %d",
|
||||
this->LedNumber);
|
||||
this->_LedNumber);
|
||||
|
||||
//
|
||||
// Notify client library that PDO is ready
|
||||
@@ -873,7 +873,7 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetXUSB::UsbBulkOrInterruptTransfer(_U
|
||||
Buffer[6],
|
||||
Buffer[7]);
|
||||
|
||||
RtlCopyBytes(this->Rumble, Buffer, pTransfer->TransferBufferLength);
|
||||
RtlCopyBytes(this->_Rumble, Buffer, pTransfer->TransferBufferLength);
|
||||
}
|
||||
|
||||
// Notify user-mode process that new data is available
|
||||
@@ -895,9 +895,9 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetXUSB::UsbBulkOrInterruptTransfer(_U
|
||||
// Assign values to output buffer
|
||||
notify->Size = sizeof(XUSB_REQUEST_NOTIFICATION);
|
||||
notify->SerialNo = this->_SerialNo;
|
||||
notify->LedNumber = this->LedNumber;
|
||||
notify->LargeMotor = this->Rumble[3];
|
||||
notify->SmallMotor = this->Rumble[4];
|
||||
notify->LedNumber = this->_LedNumber;
|
||||
notify->LargeMotor = this->_Rumble[3];
|
||||
notify->SmallMotor = this->_Rumble[4];
|
||||
|
||||
WdfRequestCompleteWithInformation(notifyRequest, status, notify->Size);
|
||||
}
|
||||
@@ -929,7 +929,7 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetXUSB::UsbControlTransfer(PURB Urb)
|
||||
{
|
||||
case 0x04:
|
||||
|
||||
blobBuffer = static_cast<PUCHAR>(WdfMemoryGetBuffer(this->InterruptBlobStorage, nullptr));
|
||||
blobBuffer = static_cast<PUCHAR>(WdfMemoryGetBuffer(this->_InterruptBlobStorage, nullptr));
|
||||
//
|
||||
// Xenon magic
|
||||
//
|
||||
@@ -969,7 +969,7 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetXUSB::SubmitReport(PVOID NewReport)
|
||||
BOOLEAN changed;
|
||||
WDFREQUEST usbRequest;
|
||||
|
||||
changed = (RtlCompareMemory(&this->Packet.Report,
|
||||
changed = (RtlCompareMemory(&this->_Packet.Report,
|
||||
&static_cast<PXUSB_SUBMIT_REPORT>(NewReport)->Report,
|
||||
sizeof(XUSB_REPORT)) != sizeof(XUSB_REPORT));
|
||||
|
||||
@@ -1004,9 +1004,9 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetXUSB::SubmitReport(PVOID NewReport)
|
||||
urb->UrbBulkOrInterruptTransfer.TransferBufferLength = sizeof(XUSB_INTERRUPT_IN_PACKET);
|
||||
|
||||
// Copy submitted report to cache
|
||||
RtlCopyBytes(&this->Packet.Report, &(static_cast<PXUSB_SUBMIT_REPORT>(NewReport))->Report, sizeof(XUSB_REPORT));
|
||||
RtlCopyBytes(&this->_Packet.Report, &(static_cast<PXUSB_SUBMIT_REPORT>(NewReport))->Report, sizeof(XUSB_REPORT));
|
||||
// Copy cached report to URB transfer buffer
|
||||
RtlCopyBytes(Buffer, &this->Packet, sizeof(XUSB_INTERRUPT_IN_PACKET));
|
||||
RtlCopyBytes(Buffer, &this->_Packet, sizeof(XUSB_INTERRUPT_IN_PACKET));
|
||||
|
||||
// Complete pending request
|
||||
WdfRequestComplete(usbRequest, status);
|
||||
|
||||
@@ -81,36 +81,36 @@ namespace ViGEm::Bus::Targets
|
||||
//
|
||||
// Rumble buffer
|
||||
//
|
||||
UCHAR Rumble[XUSB_RUMBLE_SIZE];
|
||||
UCHAR _Rumble[XUSB_RUMBLE_SIZE];
|
||||
|
||||
//
|
||||
// LED number (represents XInput slot index)
|
||||
//
|
||||
CHAR LedNumber;
|
||||
CHAR _LedNumber;
|
||||
|
||||
//
|
||||
// Report packet
|
||||
//
|
||||
XUSB_INTERRUPT_IN_PACKET Packet;
|
||||
XUSB_INTERRUPT_IN_PACKET _Packet;
|
||||
|
||||
//
|
||||
// Queue for incoming control interrupt transfer
|
||||
//
|
||||
WDFQUEUE HoldingUsbInRequests;
|
||||
WDFQUEUE _HoldingUsbInRequests;
|
||||
|
||||
//
|
||||
// Required for XInputGetCapabilities to work
|
||||
//
|
||||
BOOLEAN ReportedCapabilities;
|
||||
BOOLEAN _ReportedCapabilities;
|
||||
|
||||
//
|
||||
// Required for XInputGetCapabilities to work
|
||||
//
|
||||
ULONG InterruptInitStage;
|
||||
ULONG _InterruptInitStage;
|
||||
|
||||
//
|
||||
// Storage of binary blobs (packets) for PDO initialization
|
||||
//
|
||||
WDFMEMORY InterruptBlobStorage;
|
||||
WDFMEMORY _InterruptBlobStorage;
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user