Код: Выделить всё
NmApi.lib
Код: Выделить всё
NMAPI.dll
Тогда я создал некоторую привязку на основе документации в приложении, например:
Код: Выделить всё
// NMAPI module
use crate::shared::types::*;
#[link(name="NmApi")]
extern "system" {
pub fn NmCreateCaptureFile(pFileName: LPCWSTR, ulSize: ULONG, ulFlags: ULONG, phCaptureFile: PHANDLE, pulReturnSize: PULONG) -> ULONG;
pub fn NmOpenCaptureEngine(pCaptureEngine: PHANDLE) -> ULONG;
pub fn NmConfigAdapter(hCaptureEngine: HANDLE, ulIndex: ULONG, CallbackFunction: NM_FRAME_CALLBACK,
pCallerContext: LPVOID, CaptureCallbackExitMode: NmCaptureCallbackExitMode) -> ULONG;
pub fn NmStopCapture(pCaptureEngine: HANDLE, adapterInedx: ULONG);
pub fn NmCloseHandle(objectHandle: HANDLE);
pub fn NmAddFrame(hCaptureFile: HANDLE, hFrame: HANDLE) -> ULONG;
pub fn NmStartCapture(hCaptureEngine: HANDLE, ulAdapterIndex: ULONG, CaptureMode: NmAdapterCaptureMode) -> ULONG;
}
< /code>
// types module
pub type DWORD = u32;
pub type CHAR = u8;
pub type LONG = i32;
pub type ULONG = u32;
pub type PULONG = *mut ULONG;
pub type VOID = c_void;
pub type LPVOID = *mut VOID;
pub type LPCWSTR = *mut u16;
pub type HANDLE = *mut c_void;
pub type PHANDLE = *mut HANDLE;
#[derive(PartialEq)]
#[repr(u32)]
pub enum BOOL {
TRUE = 1,
FALSE = 0,
}
impl BOOL {
const TRUE_LITERAL: &'static str = "true";
const FALSE_LITERAL: &'static str = "false";
}
impl Debug for BOOL {
fn fmt(&self, f: &mut Formatter
Подробнее здесь: [url]https://stackoverflow.com/questions/69147490/making-nmapi-network-monitor-api-example-in-rust-compilation-successful-and-t[/url]