[channes,rdpdr] use NTSTATUS for IoStatus

the IoStatus will hold NTSTATUS values but is defined unsigned in
[MS-RDPEFS] whereas NTSTATUS is defined as signed integer. Ignore the
spec here and just treat it as signed (eliminates warnings and twos
complement will ensure the values are equal in bit representation)
This commit is contained in:
akallabeth
2025-01-01 16:46:59 +01:00
parent 19cc9ac670
commit 3092313d49
8 changed files with 10 additions and 10 deletions

View File

@@ -64,9 +64,9 @@ typedef struct
rdpContext* rdpcontext;
} DRIVE_DEVICE;
static INT32 drive_map_windows_err(DWORD fs_errno)
static NTSTATUS drive_map_windows_err(DWORD fs_errno)
{
INT32 rc = 0;
NTSTATUS rc = 0;
/* try to return NTSTATUS version of error code */

View File

@@ -74,7 +74,7 @@ static UINT irp_complete(IRP* irp)
pos = Stream_GetPosition(irp->output);
Stream_SetPosition(irp->output, RDPDR_DEVICE_IO_RESPONSE_LENGTH - 4);
Stream_Write_UINT32(irp->output, irp->IoStatus); /* IoStatus (4 bytes) */
Stream_Write_INT32(irp->output, irp->IoStatus); /* IoStatus (4 bytes) */
Stream_SetPosition(irp->output, pos);
error = rdpdr_send(rdpdr, irp->output);

View File

@@ -69,7 +69,7 @@ typedef struct
} IRP_THREAD_DATA;
static void close_terminated_irp_thread_handles(SERIAL_DEVICE* serial, BOOL forceClose);
static INT32 GetLastErrorToIoStatus(SERIAL_DEVICE* serial)
static NTSTATUS GetLastErrorToIoStatus(SERIAL_DEVICE* serial)
{
/* http://msdn.microsoft.com/en-us/library/ff547466%28v=vs.85%29.aspx#generic_status_values_for_serial_device_control_requests
*/

View File

@@ -358,7 +358,7 @@ struct S_IRP
UINT32 MinorFunction;
wStream* input;
UINT32 IoStatus;
NTSTATUS IoStatus;
wStream* output;
pcIRPResponse Complete;

View File

@@ -54,7 +54,7 @@ extern "C"
FREERDP_API const char* scard_get_ioctl_string(UINT32 ioControlCode, BOOL funcName);
FREERDP_API BOOL rdpdr_write_iocompletion_header(wStream* out, UINT32 DeviceId,
UINT32 CompletionId, UINT32 ioStatus);
UINT32 CompletionId, NTSTATUS ioStatus);
FREERDP_API void rdpdr_dump_received_packet(wLog* log, DWORD lvl, wStream* out,
const char* custom);

View File

@@ -56,7 +56,7 @@ extern "C"
FREERDP_API void* smartcard_call_get_context(scard_call_context* ctx, SCARDCONTEXT hContext);
FREERDP_API LONG smartcard_irp_device_control_call(scard_call_context* context, wStream* out,
UINT32* pIoStatus,
NTSTATUS* pIoStatus,
SMARTCARD_OPERATION* operation);
#ifdef __cplusplus

View File

@@ -252,7 +252,7 @@ const char* rdpdr_packetid_string(UINT16 packetid)
}
BOOL rdpdr_write_iocompletion_header(wStream* out, UINT32 DeviceId, UINT32 CompletionId,
UINT32 ioStatus)
NTSTATUS ioStatus)
{
WINPR_ASSERT(out);
Stream_SetPosition(out, 0);
@@ -262,7 +262,7 @@ BOOL rdpdr_write_iocompletion_header(wStream* out, UINT32 DeviceId, UINT32 Compl
Stream_Write_UINT16(out, PAKID_CORE_DEVICE_IOCOMPLETION); /* PacketId (2 bytes) */
Stream_Write_UINT32(out, DeviceId); /* DeviceId (4 bytes) */
Stream_Write_UINT32(out, CompletionId); /* CompletionId (4 bytes) */
Stream_Write_UINT32(out, ioStatus); /* IoStatus (4 bytes) */
Stream_Write_INT32(out, ioStatus); /* IoStatus (4 bytes) */
return TRUE;
}

View File

@@ -1548,7 +1548,7 @@ static LONG smartcard_LocateCardsByATRA_Call(scard_call_context* smartcard, wStr
}
LONG smartcard_irp_device_control_call(scard_call_context* smartcard, wStream* out,
UINT32* pIoStatus, SMARTCARD_OPERATION* operation)
NTSTATUS* pIoStatus, SMARTCARD_OPERATION* operation)
{
LONG result = 0;
UINT32 offset = 0;