FreeRDP
drive_main.c File Reference
#include <freerdp/config.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winpr/crt.h>
#include <winpr/assert.h>
#include <winpr/path.h>
#include <winpr/file.h>
#include <winpr/string.h>
#include <winpr/synch.h>
#include <winpr/thread.h>
#include <winpr/stream.h>
#include <winpr/environment.h>
#include <winpr/interlocked.h>
#include <winpr/collections.h>
#include <winpr/shell.h>
#include <freerdp/freerdp.h>
#include <freerdp/channels/rdpdr.h>
#include "drive_file.h"

Functions

static DWORD drive_map_windows_err (DWORD fs_errno)
 
static DRIVE_FILEdrive_get_file_by_id (DRIVE_DEVICE *drive, UINT32 id)
 
static UINT drive_process_irp_create (DRIVE_DEVICE *drive, IRP *irp)
 
static UINT drive_process_irp_close (DRIVE_DEVICE *drive, IRP *irp)
 
static UINT drive_process_irp_read (DRIVE_DEVICE *drive, IRP *irp)
 
static UINT drive_process_irp_write (DRIVE_DEVICE *drive, IRP *irp)
 
static UINT drive_process_irp_query_information (DRIVE_DEVICE *drive, IRP *irp)
 
static UINT drive_process_irp_set_information (DRIVE_DEVICE *drive, IRP *irp)
 
static UINT drive_process_irp_query_volume_information (DRIVE_DEVICE *drive, IRP *irp)
 
static UINT drive_process_irp_silent_ignore (DRIVE_DEVICE *drive, IRP *irp)
 
static UINT drive_process_irp_query_directory (DRIVE_DEVICE *drive, IRP *irp)
 
static UINT drive_process_irp_directory_control (DRIVE_DEVICE *drive, IRP *irp)
 
static UINT drive_process_irp_device_control (DRIVE_DEVICE *drive, IRP *irp)
 
static UINT drive_process_irp (DRIVE_DEVICE *drive, IRP *irp)
 
static DWORD WINAPI drive_thread_func (LPVOID arg)
 
static UINT drive_irp_request (DEVICE *device, IRP *irp)
 
static UINT drive_free_int (DRIVE_DEVICE *drive)
 
static UINT drive_free (DEVICE *device)
 
static void drive_file_objfree (void *obj)
 
static void drive_message_free (void *obj)
 
static UINT drive_register_drive_path (PDEVICE_SERVICE_ENTRY_POINTS pEntryPoints, const char *name, const char *path, BOOL automount)
 
 WINPR_ASSERT (pEntryPoints)
 
 WINPR_ASSERT (drive)
 
 if (strcmp(drive->Path, "*")==0)
 
else if (strcmp(drive->Path, "%")==0)
 

Variables

UINT error = 0
 
 drive = (RDPDR_DRIVE*)pEntryPoints->device
 

Function Documentation

◆ drive_file_objfree()

static void drive_file_objfree ( void *  obj)
static

Helper function used for freeing list dictionary value object

Here is the call graph for this function:
Here is the caller graph for this function:

◆ drive_free()

static UINT drive_free ( DEVICE *  device)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ drive_free_int()

static UINT drive_free_int ( DRIVE_DEVICE *  drive)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ drive_get_file_by_id()

static DRIVE_FILE* drive_get_file_by_id ( DRIVE_DEVICE *  drive,
UINT32  id 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ drive_irp_request()

static UINT drive_irp_request ( DEVICE *  device,
IRP *  irp 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ drive_map_windows_err()

static DWORD drive_map_windows_err ( DWORD  fs_errno)
static
Here is the caller graph for this function:

◆ drive_message_free()

static void drive_message_free ( void *  obj)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ drive_process_irp()

static UINT drive_process_irp ( DRIVE_DEVICE *  drive,
IRP *  irp 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ drive_process_irp_close()

static UINT drive_process_irp_close ( DRIVE_DEVICE *  drive,
IRP *  irp 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ drive_process_irp_create()

static UINT drive_process_irp_create ( DRIVE_DEVICE *  drive,
IRP *  irp 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ drive_process_irp_device_control()

static UINT drive_process_irp_device_control ( DRIVE_DEVICE *  drive,
IRP *  irp 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ drive_process_irp_directory_control()

static UINT drive_process_irp_directory_control ( DRIVE_DEVICE *  drive,
IRP *  irp 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ drive_process_irp_query_directory()

static UINT drive_process_irp_query_directory ( DRIVE_DEVICE *  drive,
IRP *  irp 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ drive_process_irp_query_information()

static UINT drive_process_irp_query_information ( DRIVE_DEVICE *  drive,
IRP *  irp 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ drive_process_irp_query_volume_information()

static UINT drive_process_irp_query_volume_information ( DRIVE_DEVICE *  drive,
IRP *  irp 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ drive_process_irp_read()

static UINT drive_process_irp_read ( DRIVE_DEVICE *  drive,
IRP *  irp 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ drive_process_irp_set_information()

static UINT drive_process_irp_set_information ( DRIVE_DEVICE *  drive,
IRP *  irp 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ drive_process_irp_silent_ignore()

static UINT drive_process_irp_silent_ignore ( DRIVE_DEVICE *  drive,
IRP *  irp 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ drive_process_irp_write()

static UINT drive_process_irp_write ( DRIVE_DEVICE *  drive,
IRP *  irp 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:
Here is the caller graph for this function:

◆ drive_register_drive_path()

static UINT drive_register_drive_path ( PDEVICE_SERVICE_ENTRY_POINTS  pEntryPoints,
const char *  name,
const char *  path,
BOOL  automount 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code
Here is the call graph for this function:

◆ drive_thread_func()

static DWORD WINAPI drive_thread_func ( LPVOID  arg)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ if() [1/2]

else if ( strcmp(drive->Path, "%")  = = 0)
Here is the call graph for this function:

◆ if() [2/2]

if ( strcmp(drive->Path, "*")  = = 0)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ WINPR_ASSERT() [1/2]

WINPR_ASSERT ( drive  )

◆ WINPR_ASSERT() [2/2]

WINPR_ASSERT ( pEntryPoints  )
Here is the caller graph for this function:

Variable Documentation

◆ drive

drive = (RDPDR_DRIVE*)pEntryPoints->device

◆ error

return error = 0

Function description

Returns
0 on success, otherwise a Win32 error code