69 |
{ |
{ |
70 |
int parallel_fd; |
int parallel_fd; |
71 |
|
|
72 |
parallel_fd = open(g_rdpdr_device[device_id].local_path, O_WRONLY); |
parallel_fd = open(g_rdpdr_device[device_id].local_path, O_RDWR); |
73 |
if (parallel_fd == -1) |
if (parallel_fd == -1) { |
74 |
|
perror("open"); |
75 |
return STATUS_ACCESS_DENIED; |
return STATUS_ACCESS_DENIED; |
76 |
|
} |
77 |
|
|
78 |
g_rdpdr_device[device_id].handle = parallel_fd; |
g_rdpdr_device[device_id].handle = parallel_fd; |
79 |
|
|
89 |
return STATUS_SUCCESS; |
return STATUS_SUCCESS; |
90 |
} |
} |
91 |
|
|
92 |
|
NTSTATUS |
93 |
|
parallel_read(HANDLE handle, uint8 * data, uint32 length, uint32 offset, uint32 * result) |
94 |
|
{ |
95 |
|
*result = read(handle, data, length); |
96 |
|
return STATUS_SUCCESS; |
97 |
|
} |
98 |
|
|
99 |
static NTSTATUS |
static NTSTATUS |
100 |
parallel_write(HANDLE handle, uint8 * data, uint32 length, uint32 offset, uint32 * result) |
parallel_write(HANDLE handle, uint8 * data, uint32 length, uint32 offset, uint32 * result) |
101 |
{ |
{ |
130 |
DEVICE_FNS parallel_fns = { |
DEVICE_FNS parallel_fns = { |
131 |
parallel_create, |
parallel_create, |
132 |
parallel_close, |
parallel_close, |
133 |
NULL, |
parallel_read, |
134 |
parallel_write, |
parallel_write, |
135 |
parallel_device_control |
parallel_device_control |
136 |
}; |
}; |