1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
/*
Copyright (C) 2015-2020, Dirk Krause
SPDX-License-Identifier: BSD-3-Clause
*/
/*
WARNING: This file was generated by the dkct program (see
http://dktools.sourceforge.net/ for details).
Changes you make here will be lost if dkct is run again!
You should modify the original source and run dkct on it.
Original source: dk4strmh.ctr
*/
#ifndef DK4STRMH_H_INCLUDED
/** Avoid multiple inclusions. */
#define DK4STRMH_H_INCLUDED 1
#line 10 "dk4strmh.ctr"
/** @file
Generic dk4_stream_t API for input
from Windows file handle.
*/
#ifndef DK4CONF_H_INCLUDED
#if DK4_BUILDING_DKTOOLS4
#include "dk4conf.h"
#else
#include <dktools-4/dk4conf.h>
#endif
#endif
#if DK4_ON_WINDOWS
#ifndef DK4TYPES_H_INCLUDED
#if DK4_BUILDING_DKTOOLS4
#include "dk4types.h"
#else
#include <dktools-4/dk4types.h>
#endif
#endif
#ifndef WINDOWS_H_INCLUDED
#include <windows.h>
#define WINDOWS_H_INCLUDED 1
#endif
#ifndef DK4ERROR_H_INCLUDED
#if DK4_BUILDING_DKTOOLS4
#include "dk4error.h"
#else
#include <dktools-4/dk4error.h>
#endif
#endif
#ifndef DK4STRM_H_INCLUDED
#if DK4_BUILDING_DKTOOLS4
#include "dk4strm.h"
#else
#include <dktools-4/dk4strm.h>
#endif
#endif
#ifndef STDIO_H_INCLUDED
#include <stdio.h>
#define STDIO_H_INCLUDED 1
#endif
/** Structure for keeping a HANDLE.
*/
typedef struct {
HANDLE ha; /**< Windows file handle. */
int feof; /**< Flag: Found EOF while reading. */
} dk4_stream_handle_t;
#ifdef __cplusplus
extern "C" {
#endif
/** Low level function to access a Windows handle.
@param api The stream API structure for arguments and results.
*/
void
dk4stream_windows_handle_function(dk4_stream_api_t *api);
/** Low level function to access a Windows handle and close it on
dk4stream_close().
@param api The stream API structure for arguments and results.
*/
void
dk4stream_windows_handle_with_close_function(dk4_stream_api_t *api);
/** Open a stream for an existing handle.
@param ha Existing file handle, not closed on dk4stream_close().
@param fl Access flag: DK4_STREAM_READ,, DK4_STREAM_WRITE
or (DK4_STREAM_READ | DK4_STREAM_WRITE).
@param ibs Input buffer size (0 for default).
@param obs Output buffer size (0 for default).
@param erp Error report, may be NULL.
@return Pointer to new stream on success, NULL on error.
*/
dk4_stream_t *
dk4stream_open_for_windows_handle(
HANDLE ha,
int fl,
size_t ibs,
size_t obs,
dk4_er_t *erp
);
/** Open a stream for an existing handle.
@param ha Existing file handle, closed on dk4stream_close().
@param fl Access flag: DK4_STREAM_READ,, DK4_STREAM_WRITE
or (DK4_STREAM_READ | DK4_STREAM_WRITE).
@param ibs Input buffer size (0 for default).
@param obs Output buffer size (0 for default).
@param erp Error report, may be NULL.
@return Pointer to new stream on success, NULL on error.
*/
dk4_stream_t *
dk4stream_open_for_windows_handle_with_close(
HANDLE ha,
int fl,
size_t ibs,
size_t obs,
dk4_er_t *erp
);
#ifdef __cplusplus
}
#endif
#endif
#endif
|