43 lines
1.2 KiB
Rust
43 lines
1.2 KiB
Rust
use winapi::shared::ntdef::{HANDLE, NTSTATUS, PULONG, PVOID, ULONG};
|
|
use winapi::um::winnt::STANDARD_RIGHTS_ALL;
|
|
pub const FLT_PORT_CONNECT: u32 = 0x0001;
|
|
pub const FLT_PORT_ALL_ACCESS: u32 = FLT_PORT_CONNECT | STANDARD_RIGHTS_ALL;
|
|
ENUM!{enum VDMSERVICECLASS {
|
|
VdmStartExecution = 0,
|
|
VdmQueueInterrupt = 1,
|
|
VdmDelayInterrupt = 2,
|
|
VdmInitialize = 3,
|
|
VdmFeatures = 4,
|
|
VdmSetInt21Handler = 5,
|
|
VdmQueryDir = 6,
|
|
VdmPrinterDirectIoOpen = 7,
|
|
VdmPrinterDirectIoClose = 8,
|
|
VdmPrinterInitialize = 9,
|
|
VdmSetLdtEntries = 10,
|
|
VdmSetProcessLdtInfo = 11,
|
|
VdmAdlibEmulation = 12,
|
|
VdmPMCliControl = 13,
|
|
VdmQueryVdmProcess = 14,
|
|
}}
|
|
pub type PVDMSERVICECLASS = *mut VDMSERVICECLASS;
|
|
EXTERN!{extern "system" {
|
|
fn NtVdmControl(
|
|
Service: VDMSERVICECLASS,
|
|
ServiceData: PVOID,
|
|
) -> NTSTATUS;
|
|
fn NtTraceEvent(
|
|
TraceHandle: HANDLE,
|
|
Flags: ULONG,
|
|
FieldSize: ULONG,
|
|
Fields: PVOID,
|
|
) -> NTSTATUS;
|
|
fn NtTraceControl(
|
|
FunctionCode: ULONG,
|
|
InBuffer: PVOID,
|
|
InBufferLen: ULONG,
|
|
OutBuffer: PVOID,
|
|
OutBufferLen: ULONG,
|
|
ReturnLength: PULONG,
|
|
) -> NTSTATUS;
|
|
}}
|