Skip to content

Commit 78362c1

Browse files
committed
[PSDK] Update our icmpapi.h header; make it compatible with official PSDK (reactos#8417)
- Add missing definitions in icmpapi.h and use SAL2 annotations; - Rename `__WINE_ICMPAPI_H` to the official `_ICMP_INCLUDED_`; - Use `NTDDI_VERSION` versioning for some funtions; - Use `PIO_APC_ROUTINE_DEFINED` for the `ApcRoutine` parameter of the `Icmp*SendEcho2*()` functions, allowing to use the proper `PIO_APC_ROUTINE` type instead of `FARPROC`; - Add missing Vista SP1+ `IcmpSendEcho2Ex()` function.
1 parent de1fb41 commit 78362c1

File tree

1 file changed

+118
-71
lines changed

1 file changed

+118
-71
lines changed

sdk/include/psdk/icmpapi.h

Lines changed: 118 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,103 +1,150 @@
11
/*
2-
* Interface to the ICMP functions.
3-
*
4-
* Copyright (C) 1999 Francois Gouget
5-
*
6-
* This library is free software; you can redistribute it and/or
7-
* modify it under the terms of the GNU Lesser General Public
8-
* License as published by the Free Software Foundation; either
9-
* version 2.1 of the License, or (at your option) any later version.
10-
*
11-
* This library is distributed in the hope that it will be useful,
12-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14-
* Lesser General Public License for more details.
15-
*
16-
* You should have received a copy of the GNU Lesser General Public
17-
* License along with this library; if not, write to the Free Software
18-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
2+
* PROJECT: ReactOS PSDK
3+
* LICENSE: MIT (https://spdx.org/licenses/MIT)
4+
* PURPOSE: ICMP API definitions
5+
* COPYRIGHT: Copyright 2025 Hermès Bélusca-Maïto <[email protected]>
196
*/
207

21-
#ifndef __WINE_ICMPAPI_H
22-
#define __WINE_ICMPAPI_H
8+
#ifndef _ICMP_INCLUDED_
9+
#define _ICMP_INCLUDED_
10+
11+
#pragma once
12+
13+
#ifndef IPHLPAPI_DLL_LINKAGE
14+
#ifdef DECLSPEC_IMPORT
15+
#define IPHLPAPI_DLL_LINKAGE DECLSPEC_IMPORT
16+
#else
17+
#define IPHLPAPI_DLL_LINKAGE
18+
#endif
19+
#endif
2320

2421
#ifdef __cplusplus
2522
extern "C" {
2623
#endif
2724

28-
HANDLE WINAPI IcmpCreateFile(
29-
VOID
30-
);
25+
IPHLPAPI_DLL_LINKAGE
26+
HANDLE
27+
WINAPI
28+
IcmpCreateFile(
29+
VOID);
3130

32-
HANDLE WINAPI Icmp6CreateFile(
33-
VOID
34-
);
31+
#if (NTDDI_VERSION >= NTDDI_WINXP)
32+
IPHLPAPI_DLL_LINKAGE
33+
HANDLE
34+
WINAPI
35+
Icmp6CreateFile(
36+
VOID);
37+
#endif
3538

36-
BOOL WINAPI IcmpCloseHandle(
37-
HANDLE IcmpHandle
38-
);
39+
IPHLPAPI_DLL_LINKAGE
40+
BOOL
41+
WINAPI
42+
IcmpCloseHandle(
43+
_In_ HANDLE IcmpHandle);
3944

40-
DWORD WINAPI IcmpSendEcho(
41-
HANDLE IcmpHandle,
42-
IPAddr DestinationAddress,
43-
LPVOID RequestData,
44-
WORD RequestSize,
45-
PIP_OPTION_INFORMATION RequestOptions,
46-
LPVOID ReplyBuffer,
47-
DWORD ReplySize,
48-
DWORD Timeout
49-
);
45+
IPHLPAPI_DLL_LINKAGE
46+
DWORD
47+
WINAPI
48+
IcmpSendEcho(
49+
_In_ HANDLE IcmpHandle,
50+
_In_ IPAddr DestinationAddress,
51+
_In_reads_bytes_(RequestSize) LPVOID RequestData,
52+
_In_ WORD RequestSize,
53+
_In_opt_ PIP_OPTION_INFORMATION RequestOptions,
54+
_Out_writes_bytes_(ReplySize) LPVOID ReplyBuffer,
55+
_In_range_(>=, sizeof(ICMP_ECHO_REPLY) + RequestSize + 8)
56+
DWORD ReplySize,
57+
_In_ DWORD Timeout);
5058

59+
IPHLPAPI_DLL_LINKAGE
5160
DWORD
5261
WINAPI
5362
IcmpSendEcho2(
54-
HANDLE IcmpHandle,
55-
HANDLE Event,
56-
FARPROC ApcRoutine,
57-
PVOID ApcContext,
58-
IPAddr DestinationAddress,
59-
LPVOID RequestData,
60-
WORD RequestSize,
61-
PIP_OPTION_INFORMATION RequestOptions,
62-
LPVOID ReplyBuffer,
63-
DWORD ReplySize,
64-
DWORD Timeout
65-
);
63+
_In_ HANDLE IcmpHandle,
64+
_In_opt_ HANDLE Event,
65+
#ifdef PIO_APC_ROUTINE_DEFINED
66+
_In_opt_ PIO_APC_ROUTINE ApcRoutine,
67+
#else
68+
_In_opt_ FARPROC ApcRoutine,
69+
#endif
70+
_In_opt_ PVOID ApcContext,
71+
_In_ IPAddr DestinationAddress,
72+
_In_reads_bytes_(RequestSize) LPVOID RequestData,
73+
_In_ WORD RequestSize,
74+
_In_opt_ PIP_OPTION_INFORMATION RequestOptions,
75+
_Out_writes_bytes_(ReplySize) LPVOID ReplyBuffer,
76+
_In_range_(>=, sizeof(ICMP_ECHO_REPLY) + RequestSize + 8)
77+
DWORD ReplySize,
78+
_In_ DWORD Timeout);
79+
80+
#if (NTDDI_VERSION >= NTDDI_VISTASP1)
81+
IPHLPAPI_DLL_LINKAGE
82+
DWORD
83+
WINAPI
84+
IcmpSendEcho2Ex(
85+
_In_ HANDLE IcmpHandle,
86+
_In_opt_ HANDLE Event,
87+
#ifdef PIO_APC_ROUTINE_DEFINED
88+
_In_opt_ PIO_APC_ROUTINE ApcRoutine,
89+
#else
90+
_In_opt_ FARPROC ApcRoutine,
91+
#endif
92+
_In_opt_ PVOID ApcContext,
93+
_In_ IPAddr SourceAddress,
94+
_In_ IPAddr DestinationAddress,
95+
_In_reads_bytes_(RequestSize) LPVOID RequestData,
96+
_In_ WORD RequestSize,
97+
_In_opt_ PIP_OPTION_INFORMATION RequestOptions,
98+
_Out_writes_bytes_(ReplySize) LPVOID ReplyBuffer,
99+
_In_range_(>=, sizeof(ICMP_ECHO_REPLY) + RequestSize + 8 + sizeof(IO_STATUS_BLOCK))
100+
DWORD ReplySize,
101+
_In_ DWORD Timeout);
102+
#endif
66103

104+
#if (NTDDI_VERSION >= NTDDI_WINXP)
105+
IPHLPAPI_DLL_LINKAGE
67106
DWORD
68107
WINAPI
69108
Icmp6SendEcho2(
70-
HANDLE IcmpHandle,
71-
HANDLE Event,
72-
FARPROC ApcRoutine,
73-
PVOID ApcContext,
74-
struct sockaddr_in6 *SourceAddress,
75-
struct sockaddr_in6 *DestinationAddress,
76-
LPVOID RequestData,
77-
WORD RequestSize,
78-
PIP_OPTION_INFORMATION RequestOptions,
79-
LPVOID ReplyBuffer,
80-
DWORD ReplySize,
81-
DWORD Timeout
82-
);
109+
_In_ HANDLE IcmpHandle,
110+
_In_opt_ HANDLE Event,
111+
#ifdef PIO_APC_ROUTINE_DEFINED
112+
_In_opt_ PIO_APC_ROUTINE ApcRoutine,
113+
#else
114+
_In_opt_ FARPROC ApcRoutine,
115+
#endif
116+
_In_opt_ PVOID ApcContext,
117+
_In_ struct sockaddr_in6 *SourceAddress,
118+
_In_ struct sockaddr_in6 *DestinationAddress,
119+
_In_reads_bytes_(RequestSize) LPVOID RequestData,
120+
_In_ WORD RequestSize,
121+
_In_opt_ PIP_OPTION_INFORMATION RequestOptions,
122+
_Out_writes_bytes_(ReplySize) LPVOID ReplyBuffer,
123+
_In_range_(>=, sizeof(ICMPV6_ECHO_REPLY) + RequestSize + 8 + sizeof(IO_STATUS_BLOCK))
124+
DWORD ReplySize,
125+
_In_ DWORD Timeout);
126+
#endif
83127

128+
IPHLPAPI_DLL_LINKAGE
84129
DWORD
85130
WINAPI
86131
IcmpParseReplies(
87-
LPVOID ReplyBuffer,
88-
DWORD ReplySize
89-
);
132+
_Out_writes_bytes_(ReplySize) LPVOID ReplyBuffer,
133+
_In_range_(>=, sizeof(ICMP_ECHO_REPLY) + 8)
134+
DWORD ReplySize);
90135

136+
#if (NTDDI_VERSION >= NTDDI_WINXP)
137+
IPHLPAPI_DLL_LINKAGE
91138
DWORD
92139
WINAPI
93140
Icmp6ParseReplies(
94-
LPVOID ReplyBuffer,
95-
DWORD ReplySize
96-
);
141+
_Out_writes_bytes_(ReplySize) LPVOID ReplyBuffer,
142+
_In_range_(>=, sizeof(ICMPV6_ECHO_REPLY) + 8)
143+
DWORD ReplySize);
144+
#endif
97145

98146
#ifdef __cplusplus
99147
}
100148
#endif
101149

102-
103-
#endif /* __WINE_ICMPAPI_H */
150+
#endif /* _ICMP_INCLUDED_ */

0 commit comments

Comments
 (0)