Skip to main content

winapi_forked_icmpapi/um/
icmpapi.rs

1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6use shared::minwindef::{BOOL, DWORD, FARPROC, LPVOID, WORD};
7use shared::ntdef::{HANDLE, PVOID};
8use shared::ws2ipdef::PSOCKADDR_IN6_LH;
9use um::ipexport::IPAddr;
10#[cfg(target_pointer_width = "32")]
11use um::ipexport::PIP_OPTION_INFORMATION;
12#[cfg(target_pointer_width = "64")]
13use um::ipexport::PIP_OPTION_INFORMATION32 as PIP_OPTION_INFORMATION;
14extern "system" {
15    pub fn IcmpCreateFile() -> HANDLE;
16    pub fn Icmp6CreateFile() -> HANDLE;
17    pub fn IcmpCloseHandle(IcmpHandle: HANDLE) -> BOOL;
18    pub fn IcmpSendEcho(
19        IcmpHandle: HANDLE,
20        DestinationAddress: IPAddr,
21        RequestData: LPVOID,
22        RequestSize: WORD,
23        RequestOptions: PIP_OPTION_INFORMATION,
24        ReplyBuffer: LPVOID,
25        ReplySize: DWORD,
26        Timeout: DWORD
27    ) -> DWORD;
28    pub fn IcmpSendEcho2(
29        IcmpHandle: HANDLE,
30        Event: HANDLE,
31        ApcRoutine: FARPROC, // or PIO_APC_ROUTINE
32        ApcContext: PVOID,
33        DestinationAddress: IPAddr,
34        RequestData: LPVOID,
35        RequestSize: WORD,
36        RequestOptions: PIP_OPTION_INFORMATION,
37        ReplyBuffer: LPVOID,
38        ReplySize: DWORD,
39        Timeout: DWORD
40    ) -> DWORD;
41    pub fn IcmpSendEcho2Ex(
42        IcmpHandle: HANDLE,
43        Event: HANDLE,
44        ApcRoutine: FARPROC, // or PIO_APC_ROUTINE
45        ApcContext: PVOID,
46        SourceAddress: IPAddr,
47        DestinationAddress: IPAddr,
48        RequestData: LPVOID,
49        RequestSize: WORD,
50        RequestOptions: PIP_OPTION_INFORMATION,
51        ReplyBuffer: LPVOID,
52        ReplySize: DWORD,
53        Timeout: DWORD
54    ) -> DWORD;
55    pub fn Icmp6SendEcho2(
56        IcmpHandle: HANDLE,
57        Event: HANDLE,
58        ApcRoutine: FARPROC, // or PIO_APC_ROUTINE
59        ApcContext: PVOID,
60        SourceAddress: PSOCKADDR_IN6_LH,
61        DestinationAddress: PSOCKADDR_IN6_LH,
62        RequestData: LPVOID,
63        RequestSize: WORD,
64        RequestOptions: PIP_OPTION_INFORMATION,
65        ReplyBuffer: LPVOID,
66        ReplySize: DWORD,
67        Timeout: DWORD
68    ) -> DWORD;
69    pub fn IcmpParseReplies(
70        ReplyBuffer: LPVOID,
71        ReplySize: DWORD,
72    ) -> DWORD;
73    pub fn Icmp6ParseReplies(
74        ReplyBuffer: LPVOID,
75        ReplySize: DWORD
76    ) -> DWORD;
77}