File access-alignment-property.patch of Package wine
Fake this property just in case. Star Citizen queries this.
diff --git a/dlls/mountmgr.sys/device.c b/dlls/mountmgr.sys/device.c
index e91abc3..74348aa 100644
--- a/dlls/mountmgr.sys/device.c
+++ b/dlls/mountmgr.sys/device.c
@@ -1624,6 +1624,35 @@ static NTSTATUS query_property( struct disk_device *device, IRP *irp )
break;
}
+ case StorageAccessAlignmentProperty:
+ {
+ STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR *d = irp->AssociatedIrp.SystemBuffer;
+ if (irpsp->Parameters.DeviceIoControl.OutputBufferLength < sizeof(STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR))
+ {
+ status = STATUS_INVALID_PARAMETER;
+ }
+ else
+ {
+ if (irpsp->Parameters.DeviceIoControl.OutputBufferLength < sizeof(*d))
+ {
+ d->Version = d->Size = sizeof(*d);
+ irp->IoStatus.Information = sizeof(STORAGE_DESCRIPTOR_HEADER);
+ }
+ else
+ {
+ FIXME( "Faking StorageAccessAlignmentProperty data\n" );
+
+ memset( d, 0, sizeof(*d) );
+ d->Version = d->Size = sizeof(*d);
+ /* Assume standard 512 byte sectors */
+ d->BytesPerLogicalSector = 512;
+ d->BytesPerPhysicalSector = 512;
+ irp->IoStatus.Information = sizeof(*d);
+ }
+ status = STATUS_SUCCESS;
+ }
+ break;
+ }
case StorageDeviceSeekPenaltyProperty:
{
DEVICE_SEEK_PENALTY_DESCRIPTOR *d = irp->AssociatedIrp.SystemBuffer;
diff --git a/include/ntddstor.h b/include/ntddstor.h
index 0cb6d01..205bd61 100644
--- a/include/ntddstor.h
+++ b/include/ntddstor.h
@@ -266,6 +266,16 @@ typedef struct _DEVICE_SEEK_PENALTY_DESCRIPTOR {
BOOLEAN IncursSeekPenalty;
} DEVICE_SEEK_PENALTY_DESCRIPTOR, *PDEVICE_SEEK_PENALTY_DESCRIPTOR;
+typedef struct _STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR {
+ DWORD Version;
+ DWORD Size;
+ ULONG BytesPerCacheLine;
+ ULONG BytesOffsetForCacheAlignment;
+ ULONG BytesPerLogicalSector;
+ ULONG BytesPerPhysicalSector;
+ ULONG BytesOffsetForSectorAlignment;
+} STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR, *PSTORAGE_ACCESS_ALIGNMENT_DESCRIPTOR;
+
typedef struct _STORAGE_DESCRIPTOR_HEADER {
ULONG Version;
ULONG Size;