[STORPORT] Implement StorPortSetBusDataByOffset.
[reactos.git] / drivers / storage / port / storport / storport.c
index 3520bbf..706b0b5 100644 (file)
@@ -548,7 +548,7 @@ StorPortFreeRegistryBuffer(
 
 
 /*
- * @unimplemented
+ * @implemented
  */
 STORPORT_API
 ULONG
@@ -561,9 +561,32 @@ StorPortGetBusData(
     _Out_ _When_(Length != 0, _Out_writes_bytes_(Length)) PVOID Buffer,
     _In_ ULONG Length)
 {
-    DPRINT1("StorPortGetBusData()\n");
-    UNIMPLEMENTED;
-    return 0;
+    PMINIPORT_DEVICE_EXTENSION MiniportExtension;
+    PBUS_INTERFACE_STANDARD Interface;
+    ULONG ReturnLength;
+
+    DPRINT1("StorPortGetBusData(%p %lu %lu %lu %p %lu)\n",
+            DeviceExtension, BusDataType, SystemIoBusNumber, SlotNumber, Buffer, Length);
+
+    MiniportExtension = CONTAINING_RECORD(DeviceExtension,
+                                          MINIPORT_DEVICE_EXTENSION,
+                                          HwDeviceExtension);
+    DPRINT1("DeviceExtension %p  MiniportExtension %p\n",
+            DeviceExtension, MiniportExtension);
+
+    Interface = &MiniportExtension->Miniport->DeviceExtension->BusInterface;
+
+    if (BusDataType == 4)
+        BusDataType = 0;
+
+    ReturnLength = Interface->GetBusData(Interface->Context,
+                                         BusDataType,
+                                         Buffer,
+                                         0,
+                                         Length);
+    DPRINT1("ReturnLength: %lu\n", ReturnLength);
+
+    return ReturnLength;
 }
 
 
@@ -982,7 +1005,7 @@ StorPortResumeDevice(
 
 
 /*
- * @unimplemented
+ * @implemented
  */
 STORPORT_API
 ULONG
@@ -996,9 +1019,29 @@ StorPortSetBusDataByOffset(
     _In_ ULONG Offset,
     _In_ ULONG Length)
 {
-    DPRINT1("StorPortSetBusDataByOffset()\n");
-    UNIMPLEMENTED;
-    return 0;
+    PMINIPORT_DEVICE_EXTENSION MiniportExtension;
+    PBUS_INTERFACE_STANDARD Interface;
+    ULONG ReturnLength;
+
+    DPRINT1("StorPortSetBusData(%p %lu %lu %lu %p %lu %lu)\n",
+            DeviceExtension, BusDataType, SystemIoBusNumber, SlotNumber, Buffer, Offset, Length);
+
+    MiniportExtension = CONTAINING_RECORD(DeviceExtension,
+                                          MINIPORT_DEVICE_EXTENSION,
+                                          HwDeviceExtension);
+    DPRINT1("DeviceExtension %p  MiniportExtension %p\n",
+            DeviceExtension, MiniportExtension);
+
+    Interface = &MiniportExtension->Miniport->DeviceExtension->BusInterface;
+
+    ReturnLength = Interface->SetBusData(Interface->Context,
+                                         BusDataType,
+                                         Buffer,
+                                         Offset,
+                                         Length);
+    DPRINT1("ReturnLength: %lu\n", ReturnLength);
+
+    return ReturnLength;
 }