| 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; |
| }} |