From 68a4e446d3a571d7e516ab4d457fb27220936b69 Mon Sep 17 00:00:00 2001 From: pravic Date: Thu, 14 Apr 2016 00:37:38 +0300 Subject: update docs --- doc/implementors/core/clone/trait.Clone.js | 2 +- doc/implementors/core/convert/trait.From.js | 2 +- doc/implementors/core/default/trait.Default.js | 2 +- doc/implementors/core/marker/trait.Copy.js | 2 +- doc/implementors/km/string/trait.NativeString.js | 2 +- doc/km/index.html | 9 +- doc/km/macro.KdPrint!.html | 2 +- doc/km/macro.KdPrint_u!.html | 2 +- doc/km/macro.check_unsafe!.html | 2 +- .../shared/enum.ALTERNATIVE_ARCHITECTURE_TYPE.html | 117 ++++++ doc/km/shared/enum.NT_PRODUCT_TYPE.html | 117 ++++++ doc/km/shared/index.html | 151 ++++++++ doc/km/shared/sidebar-items.js | 1 + doc/km/shared/struct.KSYSTEM_TIME.html | 117 ++++++ doc/km/shared/struct.KUSER_SHARED_DATA.html | 202 ++++++++++ doc/km/shared/type.SYSTEMTIME.html | 113 ++++++ doc/km/sidebar-items.js | 2 +- doc/km/string/fn.RtlAnsiStringToUnicodeSize.html | 2 +- doc/km/string/fn.RtlAnsiStringToUnicodeString.html | 2 +- doc/km/string/fn.RtlCompareString.html | 2 +- doc/km/string/fn.RtlCompareUnicodeString.html | 2 +- doc/km/string/fn.RtlEqualString.html | 2 +- doc/km/string/fn.RtlEqualUnicodeString.html | 2 +- doc/km/string/fn.RtlFreeAnsiString.html | 2 +- doc/km/string/fn.RtlFreeUnicodeString.html | 2 +- doc/km/string/fn.RtlInt64ToUnicodeString.html | 2 +- doc/km/string/fn.RtlIntegerToUnicodeString.html | 2 +- doc/km/string/fn.RtlUnicodeStringToAnsiSize.html | 2 +- doc/km/string/fn.RtlUnicodeStringToAnsiString.html | 2 +- doc/km/string/fn.RtlUnicodeStringToInteger.html | 2 +- doc/km/string/index.html | 2 +- doc/km/string/struct.ANSI_STRING.html | 2 +- doc/km/string/struct.UNICODE_STRING.html | 2 +- doc/km/string/trait.NativeString.html | 2 +- doc/km/string/type.AnsiString.html | 2 +- doc/km/string/type.CONST_ANSI_STRING.html | 2 +- doc/km/string/type.CONST_UNICODE_STRING.html | 2 +- doc/km/string/type.UnicodeString.html | 2 +- doc/km/time/fn.ExSystemTimeToLocalTime.html | 4 +- doc/km/time/fn.QuerySystemTime.html | 4 +- doc/km/time/fn.QueryTickCount.html | 2 +- doc/km/time/index.html | 10 +- doc/km/time/sidebar-items.js | 2 +- doc/search-index.js | 2 +- doc/src/km/lib.rs.html | 2 + doc/src/km/shared.rs.html | 414 +++++++++++++++++++++ doc/src/km/time.rs.html | 60 ++- 47 files changed, 1338 insertions(+), 49 deletions(-) create mode 100644 doc/km/shared/enum.ALTERNATIVE_ARCHITECTURE_TYPE.html create mode 100644 doc/km/shared/enum.NT_PRODUCT_TYPE.html create mode 100644 doc/km/shared/index.html create mode 100644 doc/km/shared/sidebar-items.js create mode 100644 doc/km/shared/struct.KSYSTEM_TIME.html create mode 100644 doc/km/shared/struct.KUSER_SHARED_DATA.html create mode 100644 doc/km/shared/type.SYSTEMTIME.html create mode 100644 doc/src/km/shared.rs.html (limited to 'doc') diff --git a/doc/implementors/core/clone/trait.Clone.js b/doc/implementors/core/clone/trait.Clone.js index 54ffe60..5eaeb9f 100644 --- a/doc/implementors/core/clone/trait.Clone.js +++ b/doc/implementors/core/clone/trait.Clone.js @@ -1,5 +1,5 @@ (function() {var implementors = {}; -implementors['km'] = ["impl Clone for Status",]; +implementors['km'] = ["impl Clone for Status",];implementors['km'] = ["impl Clone for Status","impl Clone for KSYSTEM_TIME",]; if (window.register_implementors) { window.register_implementors(implementors); diff --git a/doc/implementors/core/convert/trait.From.js b/doc/implementors/core/convert/trait.From.js index be57da6..d6f4916 100644 --- a/doc/implementors/core/convert/trait.From.js +++ b/doc/implementors/core/convert/trait.From.js @@ -1,5 +1,5 @@ (function() {var implementors = {}; -implementors['km'] = ["impl<'a> From<&'a [u8]> for ANSI_STRING",]; +implementors['km'] = ["impl<'a> From<&'a [u8]> for ANSI_STRING",];implementors['km'] = ["impl From<KSYSTEM_TIME> for SYSTEMTIME","impl<'a> From<&'a [u8]> for ANSI_STRING",]; if (window.register_implementors) { window.register_implementors(implementors); diff --git a/doc/implementors/core/default/trait.Default.js b/doc/implementors/core/default/trait.Default.js index c3e6591..e8a05f2 100644 --- a/doc/implementors/core/default/trait.Default.js +++ b/doc/implementors/core/default/trait.Default.js @@ -1,5 +1,5 @@ (function() {var implementors = {}; -implementors['km'] = ["impl Default for UNICODE_STRING",]; +implementors['km'] = ["impl Default for UNICODE_STRING",];implementors['km'] = ["impl Default for UNICODE_STRING",]; if (window.register_implementors) { window.register_implementors(implementors); diff --git a/doc/implementors/core/marker/trait.Copy.js b/doc/implementors/core/marker/trait.Copy.js index 8dba300..1e99006 100644 --- a/doc/implementors/core/marker/trait.Copy.js +++ b/doc/implementors/core/marker/trait.Copy.js @@ -1,5 +1,5 @@ (function() {var implementors = {}; -implementors['km'] = ["impl Copy for Status",]; +implementors['km'] = ["impl Copy for Status",];implementors['km'] = ["impl Copy for Status","impl Copy for KSYSTEM_TIME",]; if (window.register_implementors) { window.register_implementors(implementors); diff --git a/doc/implementors/km/string/trait.NativeString.js b/doc/implementors/km/string/trait.NativeString.js index 741d128..8199f6a 100644 --- a/doc/implementors/km/string/trait.NativeString.js +++ b/doc/implementors/km/string/trait.NativeString.js @@ -1,5 +1,5 @@ (function() {var implementors = {}; -implementors['km'] = []; +implementors['km'] = [];implementors['km'] = []; if (window.register_implementors) { window.register_implementors(implementors); diff --git a/doc/km/index.html b/doc/km/index.html index dc3aa20..e0635e8 100644 --- a/doc/km/index.html +++ b/doc/km/index.html @@ -47,7 +47,7 @@ [] - [src] + [src]

Windows Kernel Mode library.

Modules

@@ -149,6 +149,13 @@

NT runtime routines.

+ + + + diff --git a/doc/km/macro.KdPrint!.html b/doc/km/macro.KdPrint!.html index 2650982..7fc1f24 100644 --- a/doc/km/macro.KdPrint!.html +++ b/doc/km/macro.KdPrint!.html @@ -47,7 +47,7 @@ [] - [src] + [src]
 macro_rules! KdPrint {
     ($msg:expr $(, $arg:expr)*) => { ... };
diff --git a/doc/km/macro.KdPrint_u!.html b/doc/km/macro.KdPrint_u!.html
index cae1931..b846f1a 100644
--- a/doc/km/macro.KdPrint_u!.html
+++ b/doc/km/macro.KdPrint_u!.html
@@ -47,7 +47,7 @@
                    
                        []
                    
-               [src]
+               [src]
 
 macro_rules! KdPrint_u {
     ($msg:expr $(, $arg:expr)*) => { ... };
diff --git a/doc/km/macro.check_unsafe!.html b/doc/km/macro.check_unsafe!.html
index 0fd3a76..b429f29 100644
--- a/doc/km/macro.check_unsafe!.html
+++ b/doc/km/macro.check_unsafe!.html
@@ -47,7 +47,7 @@
                    
                        []
                    
-               [src]
+               [src]
 
 macro_rules! check_unsafe {
     ($expr:expr) => { ... };
diff --git a/doc/km/shared/enum.ALTERNATIVE_ARCHITECTURE_TYPE.html b/doc/km/shared/enum.ALTERNATIVE_ARCHITECTURE_TYPE.html
new file mode 100644
index 0000000..4d34cde
--- /dev/null
+++ b/doc/km/shared/enum.ALTERNATIVE_ARCHITECTURE_TYPE.html
@@ -0,0 +1,117 @@
+
+
+
+    
+    
+    
+    
+    
+
+    km::shared::ALTERNATIVE_ARCHITECTURE_TYPE - Rust
+
+    
+    
+    
+
+    
+    
+
+
+    
+
+    
+
+    
+
+    
+
+    
+

Enum km::shared::ALTERNATIVE_ARCHITECTURE_TYPE + + [] + + [src]

+
pub enum ALTERNATIVE_ARCHITECTURE_TYPE {
+    StandardDesign,
+    NEC98x86,
+    EndAlternatives,
+}

Variants

+
shared +

Data shared between kernel and user mode.

+
status
StandardDesign
NEC98x86
EndAlternatives
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/km/shared/enum.NT_PRODUCT_TYPE.html b/doc/km/shared/enum.NT_PRODUCT_TYPE.html new file mode 100644 index 0000000..fcc50c6 --- /dev/null +++ b/doc/km/shared/enum.NT_PRODUCT_TYPE.html @@ -0,0 +1,117 @@ + + + + + + + + + + km::shared::NT_PRODUCT_TYPE - Rust + + + + + + + + + + + + + + + + + +
+

Enum km::shared::NT_PRODUCT_TYPE + + [] + + [src]

+
pub enum NT_PRODUCT_TYPE {
+    NtProductWinNt,
+    NtProductLanManNt,
+    NtProductServer,
+}

Variants

+
NtProductWinNt
NtProductLanManNt
NtProductServer
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/km/shared/index.html b/doc/km/shared/index.html new file mode 100644 index 0000000..cf95bf4 --- /dev/null +++ b/doc/km/shared/index.html @@ -0,0 +1,151 @@ + + + + + + + + + + km::shared - Rust + + + + + + + + + + + + + + + + + +
+

Module km::shared + + [] + + [src]

+

Data shared between kernel and user mode.

+

Structs

+ + + + + + + + +
KSYSTEM_TIME +

Dystem time structure

+
KUSER_SHARED_DATA +

The data shared between kernel and user mode.

+

Enums

+ + + + + + + + +
ALTERNATIVE_ARCHITECTURE_TYPE + +
NT_PRODUCT_TYPE + +

Type Definitions

+ + + + +
SYSTEMTIME +

System time is a count of 100-nanosecond intervals since January 1, 1601.

+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/km/shared/sidebar-items.js b/doc/km/shared/sidebar-items.js new file mode 100644 index 0000000..74e4b50 --- /dev/null +++ b/doc/km/shared/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"enum":[["ALTERNATIVE_ARCHITECTURE_TYPE",""],["NT_PRODUCT_TYPE",""]],"struct":[["KSYSTEM_TIME","Dystem time structure"],["KUSER_SHARED_DATA","The data shared between kernel and user mode."]],"type":[["SYSTEMTIME","System time is a count of 100-nanosecond intervals since January 1, 1601."]]}); \ No newline at end of file diff --git a/doc/km/shared/struct.KSYSTEM_TIME.html b/doc/km/shared/struct.KSYSTEM_TIME.html new file mode 100644 index 0000000..206c335 --- /dev/null +++ b/doc/km/shared/struct.KSYSTEM_TIME.html @@ -0,0 +1,117 @@ + + + + + + + + + + km::shared::KSYSTEM_TIME - Rust + + + + + + + + + + + + + + + + + +
+

Struct km::shared::KSYSTEM_TIME + + [] + + [src]

+
pub struct KSYSTEM_TIME {
+    // some fields omitted
+}

Dystem time structure

+

Trait Implementations

Derived Implementations

impl Clone for KSYSTEM_TIME

fn clone(&self) -> KSYSTEM_TIME

+

1.0.0fn clone_from(&mut self, source: &Self)

+

impl Copy for KSYSTEM_TIME

+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/km/shared/struct.KUSER_SHARED_DATA.html b/doc/km/shared/struct.KUSER_SHARED_DATA.html new file mode 100644 index 0000000..cde4d54 --- /dev/null +++ b/doc/km/shared/struct.KUSER_SHARED_DATA.html @@ -0,0 +1,202 @@ + + + + + + + + + + km::shared::KUSER_SHARED_DATA - Rust + + + + + + + + + + + + + + + + + +
+

Struct km::shared::KUSER_SHARED_DATA + + [] + + [src]

+
pub struct KUSER_SHARED_DATA {
+    pub TickCountLowDeprecated: u32,
+    pub TickCountMultiplier: u32,
+    pub InterruptTime: KSYSTEM_TIME,
+    pub SystemTime: KSYSTEM_TIME,
+    pub TimeZoneBias: KSYSTEM_TIME,
+    pub ImageNumberLow: u16,
+    pub ImageNumberHigh: u16,
+    pub NtSystemRoot: [u16; 260],
+    pub MaxStackTraceDepth: u32,
+    pub CryptoExponent: u32,
+    pub TimeZoneId: u32,
+    pub LargePageMinimum: u32,
+    pub Reserved2: [u32; 7],
+    pub NtProductType: NT_PRODUCT_TYPE,
+    pub ProductTypeIsValid: bool,
+    pub NtMajorVersion: u32,
+    pub NtMinorVersion: u32,
+    pub ProcessorFeatures: [bool; 64],
+    pub Reserved1: u32,
+    pub Reserved3: u32,
+    pub TimeSlip: u32,
+    pub AlternativeArchitecture: ALTERNATIVE_ARCHITECTURE_TYPE,
+    pub SystemExpirationDate: u64,
+    pub SuiteMask: u32,
+    pub KdDebuggerEnabled: bool,
+    pub NXSupportPolicy: u8,
+    pub ActiveConsoleId: u32,
+    pub DismountCount: u32,
+    pub ComPlusPackage: u32,
+    pub LastSystemRITEventTickCount: u32,
+    pub NumberOfPhysicalPages: u32,
+    pub SafeBootMode: bool,
+    pub TraceLogging: u32,
+    pub TestRetInstruction: u64,
+    pub SystemCall: u32,
+    pub SystemCallReturn: u32,
+    pub SystemCallPad: [u64; 3],
+    pub TickCount: KSYSTEM_TIME,
+    pub Cookie: u32,
+}

The data shared between kernel and user mode.

+

Fields

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TickCountLowDeprecated
TickCountMultiplier
InterruptTime

Current 64-bit interrupt time in 100ns units.

+
SystemTime

Current 64-bit system time in 100ns units.

+
TimeZoneBias

Current 64-bit time zone bias.

+
ImageNumberLow
ImageNumberHigh
NtSystemRoot
MaxStackTraceDepth
CryptoExponent
TimeZoneId
LargePageMinimum
Reserved2
NtProductType
ProductTypeIsValid
NtMajorVersion
NtMinorVersion
ProcessorFeatures
Reserved1
Reserved3
TimeSlip
AlternativeArchitecture
SystemExpirationDate
SuiteMask
KdDebuggerEnabled

True if a kernel debugger is connected/enabled.

+
NXSupportPolicy
ActiveConsoleId
DismountCount
ComPlusPackage
LastSystemRITEventTickCount
NumberOfPhysicalPages
SafeBootMode

True if the system was booted in safe boot mode.

+
TraceLogging
TestRetInstruction
SystemCall
SystemCallReturn
SystemCallPad
TickCount

The 64-bit tick count.

+
Cookie

Cookie for encoding pointers system wide.

+

Methods

impl KUSER_SHARED_DATA

fn get() -> &'static KUSER_SHARED_DATA

+

Get reference to the mapped shared data.

+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/km/shared/type.SYSTEMTIME.html b/doc/km/shared/type.SYSTEMTIME.html new file mode 100644 index 0000000..b3a724d --- /dev/null +++ b/doc/km/shared/type.SYSTEMTIME.html @@ -0,0 +1,113 @@ + + + + + + + + + + km::shared::SYSTEMTIME - Rust + + + + + + + + + + + + + + + + + +
+

km::shared::SYSTEMTIME + + [] + + [src]

+
type SYSTEMTIME = i64;

System time is a count of 100-nanosecond intervals since January 1, 1601.

+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/km/sidebar-items.js b/doc/km/sidebar-items.js index 1200af8..5e7a5fd 100644 --- a/doc/km/sidebar-items.js +++ b/doc/km/sidebar-items.js @@ -1 +1 @@ -initSidebarItems({"macro":[["KdPrint!","Macro to send a message to the kernel debugger."],["KdPrint_u!","Macro to send a message to the kernel debugger for unsafe blocks."],["check_unsafe!",""]],"mod":[["basedef","Kernel-Mode Types."],["crt","C runtime library."],["debug","Debugger support."],["device_object","Device Object."],["dpc","Deferred Procedure Calls (DPC)."],["driver_object","Driver Object."],["event","Event Objects."],["file_object","File Object."],["irp","I/O request packets (IRP)."],["irql","Interrupt Request Level (IRQL)."],["macros","Macros for Kernel-Mode drivers."],["object","Kernel Objects."],["pool","Kernel Mode pools."],["rtl","NT runtime routines."],["status","NT Status codes."],["string","Kernel mode string types."],["time","NT Time routines."]]}); \ No newline at end of file +initSidebarItems({"macro":[["KdPrint!","Macro to send a message to the kernel debugger."],["KdPrint_u!","Macro to send a message to the kernel debugger for unsafe blocks."],["check_unsafe!",""]],"mod":[["basedef","Kernel-Mode Types."],["crt","C runtime library."],["debug","Debugger support."],["device_object","Device Object."],["dpc","Deferred Procedure Calls (DPC)."],["driver_object","Driver Object."],["event","Event Objects."],["file_object","File Object."],["irp","I/O request packets (IRP)."],["irql","Interrupt Request Level (IRQL)."],["macros","Macros for Kernel-Mode drivers."],["object","Kernel Objects."],["pool","Kernel Mode pools."],["rtl","NT runtime routines."],["shared","Data shared between kernel and user mode."],["status","NT Status codes."],["string","Kernel mode string types."],["time","NT Time routines."]]}); \ No newline at end of file diff --git a/doc/km/string/fn.RtlAnsiStringToUnicodeSize.html b/doc/km/string/fn.RtlAnsiStringToUnicodeSize.html index 80ca00a..f3ba276 100644 --- a/doc/km/string/fn.RtlAnsiStringToUnicodeSize.html +++ b/doc/km/string/fn.RtlAnsiStringToUnicodeSize.html @@ -47,7 +47,7 @@ [] - [src] + [src]
pub unsafe extern "system" fn RtlAnsiStringToUnicodeSize(SourceString: &CONST_ANSI_STRING) -> u32
diff --git a/doc/km/string/fn.RtlAnsiStringToUnicodeString.html b/doc/km/string/fn.RtlAnsiStringToUnicodeString.html index ff96a78..ea911db 100644 --- a/doc/km/string/fn.RtlAnsiStringToUnicodeString.html +++ b/doc/km/string/fn.RtlAnsiStringToUnicodeString.html @@ -47,7 +47,7 @@ [] - [src] + [src]
pub unsafe extern "system" fn RtlAnsiStringToUnicodeString(DestinationString: &mut UNICODE_STRING, SourceString: &CONST_ANSI_STRING, AllocateDestination: bool) -> NTSTATUS
diff --git a/doc/km/string/fn.RtlCompareString.html b/doc/km/string/fn.RtlCompareString.html index 1668198..46c9b7b 100644 --- a/doc/km/string/fn.RtlCompareString.html +++ b/doc/km/string/fn.RtlCompareString.html @@ -47,7 +47,7 @@ [] - [src] + [src]
pub unsafe extern "system" fn RtlCompareString(String1: &CONST_ANSI_STRING, String2: &CONST_ANSI_STRING, CaseInSensitive: bool) -> i32
diff --git a/doc/km/string/fn.RtlCompareUnicodeString.html b/doc/km/string/fn.RtlCompareUnicodeString.html index f802f64..8bd1ce3 100644 --- a/doc/km/string/fn.RtlCompareUnicodeString.html +++ b/doc/km/string/fn.RtlCompareUnicodeString.html @@ -47,7 +47,7 @@ [] - [src] + [src]
pub unsafe extern "system" fn RtlCompareUnicodeString(String1: &CONST_UNICODE_STRING, String2: &CONST_UNICODE_STRING, CaseInSensitive: bool) -> i32
diff --git a/doc/km/string/fn.RtlEqualString.html b/doc/km/string/fn.RtlEqualString.html index 802c692..5fba996 100644 --- a/doc/km/string/fn.RtlEqualString.html +++ b/doc/km/string/fn.RtlEqualString.html @@ -47,7 +47,7 @@ [] - [src] + [src]
pub unsafe extern "system" fn RtlEqualString(String1: &CONST_ANSI_STRING, String2: &CONST_ANSI_STRING) -> bool
diff --git a/doc/km/string/fn.RtlEqualUnicodeString.html b/doc/km/string/fn.RtlEqualUnicodeString.html index 3862d90..dacd8e3 100644 --- a/doc/km/string/fn.RtlEqualUnicodeString.html +++ b/doc/km/string/fn.RtlEqualUnicodeString.html @@ -47,7 +47,7 @@ [] - [src] + [src]
pub unsafe extern "system" fn RtlEqualUnicodeString(String1: &CONST_UNICODE_STRING, String2: &CONST_UNICODE_STRING) -> bool
diff --git a/doc/km/string/fn.RtlFreeAnsiString.html b/doc/km/string/fn.RtlFreeAnsiString.html index 30d54e2..7cc6081 100644 --- a/doc/km/string/fn.RtlFreeAnsiString.html +++ b/doc/km/string/fn.RtlFreeAnsiString.html @@ -47,7 +47,7 @@ [] - [src] + [src]
pub unsafe extern "system" fn RtlFreeAnsiString(UnicodeString: &mut ANSI_STRING)
diff --git a/doc/km/string/fn.RtlFreeUnicodeString.html b/doc/km/string/fn.RtlFreeUnicodeString.html index 9f8ebc6..138635d 100644 --- a/doc/km/string/fn.RtlFreeUnicodeString.html +++ b/doc/km/string/fn.RtlFreeUnicodeString.html @@ -47,7 +47,7 @@ [] - [src] + [src]
pub unsafe extern "system" fn RtlFreeUnicodeString(UnicodeString: &mut UNICODE_STRING)
diff --git a/doc/km/string/fn.RtlInt64ToUnicodeString.html b/doc/km/string/fn.RtlInt64ToUnicodeString.html index 5b1f954..9758db8 100644 --- a/doc/km/string/fn.RtlInt64ToUnicodeString.html +++ b/doc/km/string/fn.RtlInt64ToUnicodeString.html @@ -47,7 +47,7 @@ [] - [src] + [src]
pub unsafe extern "system" fn RtlInt64ToUnicodeString(Value: u64, Base: u32, String: &mut UNICODE_STRING) -> NTSTATUS
diff --git a/doc/km/string/fn.RtlIntegerToUnicodeString.html b/doc/km/string/fn.RtlIntegerToUnicodeString.html index 0f5b96e..f9f67b0 100644 --- a/doc/km/string/fn.RtlIntegerToUnicodeString.html +++ b/doc/km/string/fn.RtlIntegerToUnicodeString.html @@ -47,7 +47,7 @@ [] - [src] + [src]
pub unsafe extern "system" fn RtlIntegerToUnicodeString(Value: u32, Base: u32, String: &mut UNICODE_STRING) -> NTSTATUS
diff --git a/doc/km/string/fn.RtlUnicodeStringToAnsiSize.html b/doc/km/string/fn.RtlUnicodeStringToAnsiSize.html index 89cb195..0b54734 100644 --- a/doc/km/string/fn.RtlUnicodeStringToAnsiSize.html +++ b/doc/km/string/fn.RtlUnicodeStringToAnsiSize.html @@ -47,7 +47,7 @@ [] - [src] + [src]
pub unsafe extern "system" fn RtlUnicodeStringToAnsiSize(SourceString: &CONST_UNICODE_STRING) -> u32
diff --git a/doc/km/string/fn.RtlUnicodeStringToAnsiString.html b/doc/km/string/fn.RtlUnicodeStringToAnsiString.html index f0a4a5b..6893192 100644 --- a/doc/km/string/fn.RtlUnicodeStringToAnsiString.html +++ b/doc/km/string/fn.RtlUnicodeStringToAnsiString.html @@ -47,7 +47,7 @@ [] - [src] + [src]
pub unsafe extern "system" fn RtlUnicodeStringToAnsiString(DestinationString: &mut ANSI_STRING, SourceString: &CONST_UNICODE_STRING, AllocateDestination: bool) -> NTSTATUS
diff --git a/doc/km/string/fn.RtlUnicodeStringToInteger.html b/doc/km/string/fn.RtlUnicodeStringToInteger.html index 387b96e..50c4550 100644 --- a/doc/km/string/fn.RtlUnicodeStringToInteger.html +++ b/doc/km/string/fn.RtlUnicodeStringToInteger.html @@ -47,7 +47,7 @@ [] - [src] + [src]
pub unsafe extern "system" fn RtlUnicodeStringToInteger(String: &CONST_UNICODE_STRING, Base: u32, Value: &mut u32) -> NTSTATUS
diff --git a/doc/km/string/index.html b/doc/km/string/index.html index f11b932..3e4ca31 100644 --- a/doc/km/string/index.html +++ b/doc/km/string/index.html @@ -47,7 +47,7 @@ [] - [src] + [src]

Kernel mode string types.

Structs

diff --git a/doc/km/string/struct.ANSI_STRING.html b/doc/km/string/struct.ANSI_STRING.html index 8468c08..192ba78 100644 --- a/doc/km/string/struct.ANSI_STRING.html +++ b/doc/km/string/struct.ANSI_STRING.html @@ -47,7 +47,7 @@ [] - [src] + [src]
pub struct ANSI_STRING {
     pub Length: u16,
     pub MaximumLength: u16,
diff --git a/doc/km/string/struct.UNICODE_STRING.html b/doc/km/string/struct.UNICODE_STRING.html
index 0bb1613..ecbddc3 100644
--- a/doc/km/string/struct.UNICODE_STRING.html
+++ b/doc/km/string/struct.UNICODE_STRING.html
@@ -47,7 +47,7 @@
                    
                        []
                    
-               [src]
+               [src]
 
pub struct UNICODE_STRING {
     pub Length: u16,
     pub MaximumLength: u16,
diff --git a/doc/km/string/trait.NativeString.html b/doc/km/string/trait.NativeString.html
index 2938e3b..9a9d87c 100644
--- a/doc/km/string/trait.NativeString.html
+++ b/doc/km/string/trait.NativeString.html
@@ -47,7 +47,7 @@
                    
                        []
                    
-               [src]
+               [src]
 
pub trait NativeString {
     fn size(&self) -> u16;
     fn max_size(&self) -> u16;
diff --git a/doc/km/string/type.AnsiString.html b/doc/km/string/type.AnsiString.html
index dd1e9d4..31fe4c6 100644
--- a/doc/km/string/type.AnsiString.html
+++ b/doc/km/string/type.AnsiString.html
@@ -47,7 +47,7 @@
                    
                        []
                    
-               [src]
+               [src]
 
type AnsiString = ANSI_STRING;
diff --git a/doc/km/string/type.CONST_ANSI_STRING.html b/doc/km/string/type.CONST_ANSI_STRING.html index 0d42de7..244d657 100644 --- a/doc/km/string/type.CONST_ANSI_STRING.html +++ b/doc/km/string/type.CONST_ANSI_STRING.html @@ -47,7 +47,7 @@ [] - [src] + [src]
type CONST_ANSI_STRING = ANSI_STRING;
diff --git a/doc/km/string/type.CONST_UNICODE_STRING.html b/doc/km/string/type.CONST_UNICODE_STRING.html index aa7401a..a87d598 100644 --- a/doc/km/string/type.CONST_UNICODE_STRING.html +++ b/doc/km/string/type.CONST_UNICODE_STRING.html @@ -47,7 +47,7 @@ [] - [src] + [src]
type CONST_UNICODE_STRING = UNICODE_STRING;
diff --git a/doc/km/string/type.UnicodeString.html b/doc/km/string/type.UnicodeString.html index df7e89f..f1ad67f 100644 --- a/doc/km/string/type.UnicodeString.html +++ b/doc/km/string/type.UnicodeString.html @@ -47,7 +47,7 @@ [] - [src] + [src]
type UnicodeString = UNICODE_STRING;
diff --git a/doc/km/time/fn.ExSystemTimeToLocalTime.html b/doc/km/time/fn.ExSystemTimeToLocalTime.html index 002b77d..b6c76ee 100644 --- a/doc/km/time/fn.ExSystemTimeToLocalTime.html +++ b/doc/km/time/fn.ExSystemTimeToLocalTime.html @@ -47,8 +47,8 @@ [] - [src] -
pub unsafe extern "system" fn ExSystemTimeToLocalTime(SystemTime: *const SYSTEMTIME, LocalTime: *mut SYSTEMTIME)

Converts a GMT system time value to the local system time for the current time zone.

+ [src] +
pub unsafe extern "system" fn ExSystemTimeToLocalTime(SystemTime: *const SYSTEMTIME, LocalTime: *mut SYSTEMTIME)

Converts a GMT system time value to the local system time for the current time zone.

diff --git a/doc/km/time/fn.QuerySystemTime.html b/doc/km/time/fn.QuerySystemTime.html index 8eacb2e..8a8f052 100644 --- a/doc/km/time/fn.QuerySystemTime.html +++ b/doc/km/time/fn.QuerySystemTime.html @@ -47,8 +47,8 @@ [] - [src] -
pub fn QuerySystemTime() -> SYSTEMTIME

Obtains the current system time.

+ [src] +
pub fn QuerySystemTime() -> SYSTEMTIME

Obtains the current system time.

diff --git a/doc/km/time/fn.QueryTickCount.html b/doc/km/time/fn.QueryTickCount.html index f193713..f0a3989 100644 --- a/doc/km/time/fn.QueryTickCount.html +++ b/doc/km/time/fn.QueryTickCount.html @@ -47,7 +47,7 @@ [] - [src] + [src]
pub fn QueryTickCount() -> i64

A count of the interval timer interrupts that have occurred since the system was booted.

diff --git a/doc/km/time/index.html b/doc/km/time/index.html index a9e4dc0..2e75f91 100644 --- a/doc/km/time/index.html +++ b/doc/km/time/index.html @@ -47,7 +47,7 @@ [] - [src] + [src]

NT Time routines.

Functions

@@ -71,14 +71,6 @@ -

A count of the interval timer interrupts that have occurred since the system was booted.

Type Definitions

- - - -
SYSTEMTIME -

System time is a count of 100-nanosecond intervals since January 1, 1601.

-
diff --git a/doc/km/time/sidebar-items.js b/doc/km/time/sidebar-items.js index 2dc6ba1..f8df114 100644 --- a/doc/km/time/sidebar-items.js +++ b/doc/km/time/sidebar-items.js @@ -1 +1 @@ -initSidebarItems({"fn":[["ExSystemTimeToLocalTime","Converts a GMT system time value to the local system time for the current time zone."],["QuerySystemTime","Obtains the current system time."],["QueryTickCount","A count of the interval timer interrupts that have occurred since the system was booted."]],"type":[["SYSTEMTIME","System time is a count of 100-nanosecond intervals since January 1, 1601."]]}); \ No newline at end of file +initSidebarItems({"fn":[["ExSystemTimeToLocalTime","Converts a GMT system time value to the local system time for the current time zone."],["QuerySystemTime","Obtains the current system time."],["QueryTickCount","A count of the interval timer interrupts that have occurred since the system was booted."]]}); \ No newline at end of file diff --git a/doc/search-index.js b/doc/search-index.js index 0b6ffc1..032d614 100644 --- a/doc/search-index.js +++ b/doc/search-index.js @@ -1,3 +1,3 @@ var searchIndex = {}; -searchIndex["km"] = {"doc":"Windows Kernel Mode library.","items":[[0,"macros","km","Macros for Kernel-Mode drivers.",null,null],[0,"status","","NT Status codes.",null,null],[4,"Status","km::status","NT Status code.",null,null],[13,"success","","",0,null],[13,"unsuccessful","","",0,null],[5,"check","","Convert `Status` to `Result<()>`.",null,{"inputs":[{"name":"status"}],"output":{"name":"result"}}],[6,"NTSTATUS","","NT Status type.",null,null],[6,"Result","","A specialized `Result` type for NT operations.",null,null],[11,"clone","","",0,{"inputs":[{"name":"status"}],"output":{"name":"status"}}],[11,"is_ok","","Evaluates to `true` if the `Status` is a success type (`0..0x3FFFFFFF`)\nor an informational type (`0x40000000..0x7FFFFFFF`).",0,{"inputs":[{"name":"status"}],"output":{"name":"bool"}}],[11,"is_err","","Status is a warning or error type.",0,{"inputs":[{"name":"status"}],"output":{"name":"bool"}}],[11,"is_success","","Status is a success type.",0,{"inputs":[{"name":"status"}],"output":{"name":"bool"}}],[11,"is_information","","Status is a information type.",0,{"inputs":[{"name":"status"}],"output":{"name":"bool"}}],[11,"is_warning","","Status is a warning type.",0,{"inputs":[{"name":"status"}],"output":{"name":"bool"}}],[11,"is_error","","Status is a error type.",0,{"inputs":[{"name":"status"}],"output":{"name":"bool"}}],[0,"basedef","km","Kernel-Mode Types.",null,null],[3,"LIST_ENTRY","km::basedef","Doubly linked list structure.",null,null],[12,"next","","",1,null],[12,"prev","","",1,null],[3,"KSPIN_LOCK","","Spin Lock.",null,null],[12,"lock","","",2,null],[3,"DISPATCHER_HEADER","","Common dispatcher object header.",null,null],[12,"Type","","",3,null],[12,"Absolute","","",3,null],[12,"Size","","",3,null],[12,"Inserted","","",3,null],[12,"SignalState","","",3,null],[12,"WaitListHead","","",3,null],[3,"IO_STATUS_BLOCK","","An I/O status block.",null,null],[12,"Status","","",4,null],[12,"Information","","",4,null],[4,"KPROCESSOR_MODE","","Processor modes.",null,null],[13,"KernelMode","","",5,null],[13,"UserMode","","",5,null],[5,"KeGetCurrentIrql","","",null,null],[5,"KeRaiseIrqlToDpcLevel","","",null,null],[5,"KfLowerIrql","","",null,null],[5,"KfRaiseIrql","","",null,null],[0,"IO_PRIORITY","","I/O Request priority.",null,null],[6,"KPRIORITY_BOOST","km::basedef::IO_PRIORITY","I/O Request priority type.",null,null],[17,"IO_NO_INCREMENT","","",null,null],[17,"IO_DISK_INCREMENT","","",null,null],[17,"EVENT_INCREMENT","","",null,null],[6,"VOID","km::basedef","",null,null],[6,"PVOID","","",null,null],[6,"PCVOID","","",null,null],[6,"PETHREAD","","",null,null],[6,"PIO_APC_ROUTINE","","",null,null],[6,"PIO_STATUS_BLOCK","","",null,null],[0,"crt","km","C runtime library.",null,null],[5,"memcmp","km::crt","",null,null],[5,"memcpy","","",null,null],[5,"strlen","","",null,null],[5,"strcmp","","",null,null],[5,"strcpy","","",null,null],[5,"strcat","","",null,null],[5,"strncpy","","",null,null],[5,"wcslen","","",null,null],[5,"wcscpy","","",null,null],[5,"wcsncpy","","",null,null],[0,"debug","km","Debugger support.",null,null],[4,"DPFLTR_LEVEL","km::debug","`DbgPrintEx` Message severity.",null,null],[13,"ERROR","","",6,null],[13,"WARNING","","",6,null],[13,"TRACE","","",6,null],[13,"INFO","","",6,null],[4,"DPFLTR_ID","","`DbgPrintEx` Component name.",null,null],[13,"SYSTEM","","",7,null],[13,"SMSS","","",7,null],[13,"SETUP","","",7,null],[13,"NTFS","","",7,null],[13,"IHVDRIVER","","",7,null],[13,"IHVVIDEO","","",7,null],[13,"IHVAUDIO","","",7,null],[13,"IHVNETWORK","","",7,null],[13,"IHVSTREAMING","","",7,null],[13,"IHVBUS","","",7,null],[13,"DEFAULT","","",7,null],[5,"DbgPrint","","`DbgPrint` routine sends a message to the kernel debugger.",null,null],[5,"DbgPrintEx","","The `DbgPrintEx` routine sends a string to the kernel debugger if certain conditions are met.",null,null],[5,"DbgBreakPoint","","Breaks into the kernel debugger.",null,null],[5,"DbgBreakPointWithStatus","","Breaks into the kernel debugger and sends the value of `Status` to the debugger.",null,null],[0,"device_object","km","Device Object.",null,null],[3,"DEVICE_OBJECT","km::device_object","The `DEVICE_OBJECT` structure is used by the operating system to represent a device object.",null,null],[12,"Type","","",8,null],[12,"Size","","",8,null],[12,"ReferenceCount","","",8,null],[12,"DriverObject","","",8,null],[12,"NextDevice","","",8,null],[12,"AttachedDevice","","",8,null],[12,"CurrentIrp","","",8,null],[12,"Timer","","",8,null],[12,"Flags","","",8,null],[12,"Characteristics","","",8,null],[12,"Vpb","","",8,null],[12,"DeviceExtension","","",8,null],[12,"DeviceType","","",8,null],[12,"StackSize","","",8,null],[12,"Queue","","",8,null],[12,"AlignmentRequirement","","",8,null],[12,"DeviceQueue","","",8,null],[12,"Dpc","","",8,null],[12,"ActiveThreadCount","","",8,null],[12,"SecurityDescriptor","","",8,null],[12,"DeviceLock","","",8,null],[12,"SectorSize","","",8,null],[12,"Spare1","","",8,null],[12,"DeviceObjectExtension","","",8,null],[12,"Reserved","","",8,null],[3,"DEVOBJ_EXTENSION","","Device object extension structure.",null,null],[4,"DEVICE_FLAGS","","Device object flags.",null,null],[13,"NONE","","",9,null],[13,"DO_VERIFY_VOLUME","","",9,null],[13,"DO_BUFFERED_IO","","",9,null],[13,"DO_EXCLUSIVE","","",9,null],[13,"DO_DIRECT_IO","","",9,null],[13,"DO_MAP_IO_BUFFER","","",9,null],[13,"DO_DEVICE_HAS_NAME","","",9,null],[13,"DO_DEVICE_INITIALIZING","","",9,null],[13,"DO_SYSTEM_BOOT_PARTITION","","",9,null],[13,"DO_LONG_TERM_REQUESTS","","",9,null],[13,"DO_NEVER_LAST_DEVICE","","",9,null],[13,"DO_SHUTDOWN_REGISTERED","","",9,null],[13,"DO_BUS_ENUMERATED_DEVICE","","",9,null],[13,"DO_POWER_PAGABLE","","",9,null],[13,"DO_POWER_INRUSH","","",9,null],[13,"DO_POWER_NOOP","","",9,null],[13,"DO_LOW_PRIORITY_FILESYSTEM","","",9,null],[13,"DO_XIP","","",9,null],[5,"IoCreateDevice","","",null,null],[5,"IoDeleteDevice","","",null,null],[5,"IoCreateSymbolicLink","","",null,null],[5,"IoDeleteSymbolicLink","","",null,null],[6,"PDEVICE_OBJECT","","",null,null],[6,"PDRIVER_CANCEL","","",null,null],[6,"PDRIVER_DISPATCH","","",null,null],[6,"PIO_COMPLETION_ROUTINE","","",null,null],[0,"dpc","km","Deferred Procedure Calls (DPC).",null,null],[3,"KDPC","km::dpc","Deferred Procedure Call object.",null,null],[3,"KDPC_DATA","","DPC data structure definition.",null,null],[5,"KeInitializeDpc","","",null,null],[5,"KeInsertQueueDpc","","",null,null],[5,"KeRemoveQueueDpc","","",null,null],[5,"KeFlushQueuedDpcs","","",null,null],[5,"KeGenericCallDpc","","",null,null],[6,"PDEFERRED_ROUTINE","","",null,null],[0,"driver_object","km","Driver Object.",null,null],[3,"DRIVER_OBJECT","km::driver_object","Represents the image of a loaded kernel-mode driver.",null,null],[12,"Type","","",10,null],[12,"Size","","",10,null],[12,"DeviceObject","","",10,null],[12,"Flags","","",10,null],[12,"DriverStart","","",10,null],[12,"DriverSize","","",10,null],[12,"DriverSection","","",10,null],[12,"DriverExtension","","",10,null],[12,"DriverName","","",10,null],[12,"HardwareDatabase","","",10,null],[12,"FastIoDispatch","","",10,null],[12,"DriverInit","","",10,null],[12,"DriverStartIo","","",10,null],[12,"DriverUnload","","The entry point for the driver's Unload routine, if any.",10,null],[12,"MajorFunction","","A dispatch table consisting of an array of entry points for the driver's `DispatchXxx` routines.",10,null],[6,"PDRIVER_INITIALIZE","","",null,null],[6,"PDRIVER_STARTIO","","",null,null],[6,"PDRIVER_UNLOAD","","",null,null],[0,"event","km","Event Objects.",null,null],[3,"KEVENT","km::event","Event object.",null,null],[4,"EVENT_TYPE","","Specifies the event type.",null,null],[13,"NotificationEvent","","Manual-reset event.",11,null],[13,"SynchronizationEvent","","Auto-clearing event.",11,null],[5,"KeInitializeEvent","","",null,null],[5,"KeSetEvent","","",null,null],[5,"KeReadStateEvent","","",null,null],[5,"KeResetEvent","","",null,null],[5,"KeClearEvent","","",null,null],[6,"PKEVENT","","",null,null],[0,"file_object","km","File Object.",null,null],[3,"FILE_OBJECT","km::file_object","The `FILE_OBJECT` structure is used by the system to represent a file object.",null,null],[6,"PFILE_OBJECT","","",null,null],[0,"irp","km","I/O request packets (IRP).",null,null],[3,"IRP","km::irp","The `IRP` structure is a partial opaque structure that represents an I/O request packet.",null,null],[12,"Type","","",12,null],[12,"Size","","",12,null],[12,"MdlAddress","","Pointer to an `MDL` describing a user buffer, if the driver is using direct I/O.",12,null],[12,"Flags","","Flags word - used to remember various flags.",12,null],[12,"SystemBuffer","","Pointer to a system-space buffer if the driver is using buffered I/O.",12,null],[12,"ThreadListEntry","","",12,null],[12,"IoStatus","","I/O status - final status of operation.",12,null],[12,"RequestorMode","","Indicates the execution mode of the original requester of the operation.",12,null],[12,"PendingReturned","","If set to `TRUE`, a driver has marked the IRP pending.",12,null],[12,"StackCount","","Stack state information.",12,null],[12,"CurrentLocation","","Stack state information.",12,null],[12,"Cancel","","If set to `TRUE`, the IRP either is or should be canceled.",12,null],[12,"CancelIrql","","Irql at which the cancel spinlock was acquired.",12,null],[12,"ApcEnvironment","","",12,null],[12,"AllocationFlags","","Allocation control flags.",12,null],[12,"UserIosb","","User parameters.",12,null],[12,"UserEvent","","",12,null],[12,"UserApcRoutine","","",12,null],[12,"UserApcContext","","",12,null],[12,"CancelRoutine","","Contains the entry point for a driver-supplied `Cancel` routine to be called if the IRP is canceled.",12,null],[12,"UserBuffer","","Contains the address of an output buffer for `IRP_MJ_DEVICE_CONTROL`.",12,null],[12,"Overlay","","Kernel structures.",12,null],[3,"_IRP_OVERLAY","","Kernel structures for IRP.",null,null],[12,"DriverContext","","",13,null],[12,"Thread","","",13,null],[12,"AuxiliaryBuffer","","",13,null],[12,"ListEntry","","",13,null],[12,"CurrentStackLocation","","Current stack location.",13,null],[12,"OriginalFileObject","","",13,null],[3,"IO_STACK_LOCATION","","I/O Stack Locations.",null,null],[12,"MajorFunction","","The IRP major function code indicating the type of I/O operation to be performed.",14,null],[12,"MinorFunction","","A subfunction code for `MajorFunction`.",14,null],[12,"Flags","","Request-type-specific values (see [DEVICE_FLAGS](../device_object/enum.DEVICE_FLAGS.html)).",14,null],[12,"Control","","",14,null],[12,"Parameters","","A union that depends on the major and minor IRP function code values\ncontained in `MajorFunction` and `MinorFunction`.",14,null],[12,"DeviceObject","","A pointer to the driver-created `DEVICE_OBJECT` structure\nrepresenting the target physical, logical, or virtual device for which this driver is to handle the IRP.",14,null],[12,"FileObject","","A pointer to a `FILE_OBJECT` structure that represents the file object, if any, that is associated with `DeviceObject` pointer.",14,null],[12,"CompletionRoutine","","The following routine is invoked depending on the flags in the above `Flags` field.",14,null],[12,"Context","","The following is used to store the address of the context parameter that should be passed to the `CompletionRoutine`.",14,null],[3,"_IO_STACK_LOCATION_READ","","Parameters for `IRP_MJ_READ`.",null,null],[12,"Length","","",15,null],[12,"Key","","",15,null],[12,"ByteOffset","","",15,null],[4,"IRP_MJ","","`IRP` Major Function Codes.",null,null],[13,"CREATE","","",16,null],[13,"CREATE_NAMED_PIPE","","",16,null],[13,"CLOSE","","",16,null],[13,"READ","","",16,null],[13,"WRITE","","",16,null],[13,"QUERY_INFORMATION","","",16,null],[13,"SET_INFORMATION","","",16,null],[13,"QUERY_EA","","",16,null],[13,"SET_EA","","",16,null],[13,"FLUSH_BUFFERS","","",16,null],[13,"QUERY_VOLUME_INFORMATION","","",16,null],[13,"SET_VOLUME_INFORMATION","","",16,null],[13,"DIRECTORY_CONTROL","","",16,null],[13,"FILE_SYSTEM_CONTROL","","",16,null],[13,"DEVICE_CONTROL","","",16,null],[13,"INTERNAL_DEVICE_CONTROL","","",16,null],[13,"SHUTDOWN","","",16,null],[13,"LOCK_CONTROL","","",16,null],[13,"CLEANUP","","",16,null],[13,"CREATE_MAILSLOT","","",16,null],[13,"QUERY_SECURITY","","",16,null],[13,"SET_SECURITY","","",16,null],[13,"POWER","","",16,null],[13,"SYSTEM_CONTROL","","",16,null],[13,"DEVICE_CHANGE","","",16,null],[13,"QUERY_QUOTA","","",16,null],[13,"SET_QUOTA","","",16,null],[13,"PNP","","",16,null],[13,"MAXIMUM_FUNCTION","","",16,null],[6,"PIRP","","",null,null],[6,"PIO_STACK_LOCATION","","",null,null],[11,"get_current_stack_location","","Returns a pointer to the caller's stack location in the given `IRP`.",12,{"inputs":[{"name":"irp"}],"output":{"name":"io_stack_location"}}],[11,"complete_request","","Indicates that the caller has completed all processing for a given I/O request\nand is returning the given IRP to the I/O manager.",12,{"inputs":[{"name":"irp"},{"name":"ntstatus"}],"output":{"name":"ntstatus"}}],[11,"ParametersRead","","Access parameters for `IRP_MJ_READ`.",14,{"inputs":[{"name":"io_stack_location"}],"output":{"name":"_io_stack_location_read"}}],[0,"irql","km","Interrupt Request Level (IRQL).",null,null],[6,"KIRQL","km::irql","IRQL type.",null,null],[17,"PASSIVE_LEVEL","","Passive release level, no interrupt vectors are masked.",null,null],[17,"LOW_LEVEL","","The lowest IRQL level, no interrupt vectors are masked.",null,null],[17,"APC_LEVEL","","APC interrupt level.",null,null],[17,"DISPATCH_LEVEL","","Dispatcher level",null,null],[17,"PROFILE_LEVEL","","Timer used for profiling.",null,null],[17,"CLOCK_LEVEL","","Interval clock level.",null,null],[17,"IPI_LEVEL","","Interprocessor interrupt level.",null,null],[17,"POWER_LEVEL","","Power failure level.",null,null],[17,"HIGH_LEVEL","","Highest interrupt level.",null,null],[17,"SYNCH_LEVEL","","Synchronization level.",null,null],[0,"object","km","Kernel Objects.",null,null],[3,"WAIT_CONTEXT_BLOCK","km::object","",null,null],[3,"KDEVICE_QUEUE_ENTRY","","",null,null],[3,"KDEVICE_QUEUE","","",null,null],[4,"IO_ALLOCATION_ACTION","","",null,null],[13,"KeepObject","","",17,null],[13,"DeallocateObject","","",17,null],[13,"DeallocateObjectKeepRegisters","","",17,null],[0,"pool","km","Kernel Mode pools.",null,null],[4,"POOL_TYPE","km::pool","Specifies the type of system memory to allocate.",null,null],[13,"NonPagedPool","","Nonpageable system memory, can be accessed from any IRQL.",18,null],[13,"PagedPool","","Pageable system memory, can only be allocated and accessed at IRQL < DISPATCH_LEVEL.",18,null],[13,"NonPagedPoolMustSucceed","","",18,null],[13,"DontUseThisType","","",18,null],[13,"NonPagedPoolCacheAligned","","Nonpaged pool, aligned on processor cache boundaries.",18,null],[13,"PagedPoolCacheAligned","","Paged pool, aligned on processor cache boundaries.",18,null],[13,"NonPagedPoolCacheAlignedMustS","","",18,null],[13,"MaxPoolType","","",18,null],[13,"NonPagedPoolSession","","",18,null],[13,"PagedPoolSession","","",18,null],[13,"NonPagedPoolMustSucceedSession","","",18,null],[13,"DontUseThisTypeSession","","",18,null],[13,"NonPagedPoolCacheAlignedSession","","",18,null],[13,"PagedPoolCacheAlignedSession","","",18,null],[13,"NonPagedPoolCacheAlignedMustSSession","","",18,null],[5,"ExAllocatePoolWithTag","","Allocates pool memory of the specified type and tag.",null,null],[5,"ExFreePoolWithTag","","Deallocates a block of pool memory allocated with the specified tag.",null,null],[5,"ExAllocatePool","","Allocates pool memory of the specified type.",null,null],[5,"ExFreePool","","Deallocates a block of pool memory.",null,null],[0,"rtl","km","NT runtime routines.",null,null],[5,"RtlRandom","km::rtl","Returns a random number that was generated from a given `seed` value in the range `[0..MAXLONG-1]`.",null,null],[5,"RtlRandomEx","","Returns a random number that was generated from a given `seed` value in the range `[0..MAXLONG-1]`.",null,null],[5,"RtlUniform","","A simple uniform random number generator, based on D.H. Lehmer's 1948 alrogithm.",null,null],[0,"string","km","Kernel mode string types.",null,null],[3,"UNICODE_STRING","km::string","A counted Unicode string.",null,null],[12,"Length","","The length in **bytes** of the string stored in `Buffer`.",19,null],[12,"MaximumLength","","The length in **bytes** of `Buffer`.",19,null],[12,"Buffer","","Pointer to a buffer used to contain a string of wide characters.",19,null],[3,"ANSI_STRING","","A counted string used for ANSI strings.",null,null],[12,"Length","","The length in *bytes* of the string stored in `Buffer`.",20,null],[12,"MaximumLength","","The length in bytes of `Buffer`.",20,null],[12,"Buffer","","Pointer to a buffer used to contain a string of characters.",20,null],[5,"RtlIntegerToUnicodeString","","",null,null],[5,"RtlInt64ToUnicodeString","","",null,null],[5,"RtlUnicodeStringToInteger","","",null,null],[5,"RtlUnicodeStringToAnsiString","","",null,null],[5,"RtlUnicodeStringToAnsiSize","","",null,null],[5,"RtlAnsiStringToUnicodeString","","",null,null],[5,"RtlAnsiStringToUnicodeSize","","",null,null],[5,"RtlCompareUnicodeString","","",null,null],[5,"RtlCompareString","","",null,null],[5,"RtlEqualUnicodeString","","",null,null],[5,"RtlEqualString","","",null,null],[5,"RtlFreeAnsiString","","",null,null],[5,"RtlFreeUnicodeString","","",null,null],[6,"AnsiString","","",null,null],[6,"UnicodeString","","",null,null],[6,"CONST_UNICODE_STRING","","",null,null],[6,"CONST_ANSI_STRING","","",null,null],[8,"NativeString","","NT native string types.",null,null],[10,"size","","Size of string in bytes.",21,{"inputs":[{"name":"nativestring"}],"output":{"name":"u16"}}],[10,"max_size","","Size of buffer in bytes.",21,{"inputs":[{"name":"nativestring"}],"output":{"name":"u16"}}],[11,"is_empty","","Check is the string is empty.",21,{"inputs":[{"name":"nativestring"}],"output":{"name":"bool"}}],[11,"size","","",19,{"inputs":[{"name":"unicode_string"}],"output":{"name":"u16"}}],[11,"max_size","","",19,{"inputs":[{"name":"unicode_string"}],"output":{"name":"u16"}}],[11,"default","","",19,{"inputs":[],"output":{"name":"self"}}],[11,"from","","",20,null],[0,"time","km","NT Time routines.",null,null],[5,"QuerySystemTime","km::time","Obtains the current system time.",null,{"inputs":[],"output":{"name":"systemtime"}}],[5,"QueryTickCount","","A count of the interval timer interrupts that have occurred since the system was booted.",null,{"inputs":[],"output":{"name":"i64"}}],[5,"ExSystemTimeToLocalTime","","Converts a GMT system time value to the local system time for the current time zone.",null,null],[6,"SYSTEMTIME","","System time is a count of 100-nanosecond intervals since January 1, 1601.",null,null],[14,"KdPrint!","km","Macro to send a message to the kernel debugger.",null,null],[14,"KdPrint_u!","","Macro to send a message to the kernel debugger for unsafe blocks.",null,null],[14,"check_unsafe!","","",null,null]],"paths":[[4,"Status"],[3,"LIST_ENTRY"],[3,"KSPIN_LOCK"],[3,"DISPATCHER_HEADER"],[3,"IO_STATUS_BLOCK"],[4,"KPROCESSOR_MODE"],[4,"DPFLTR_LEVEL"],[4,"DPFLTR_ID"],[3,"DEVICE_OBJECT"],[4,"DEVICE_FLAGS"],[3,"DRIVER_OBJECT"],[4,"EVENT_TYPE"],[3,"IRP"],[3,"_IRP_OVERLAY"],[3,"IO_STACK_LOCATION"],[3,"_IO_STACK_LOCATION_READ"],[4,"IRP_MJ"],[4,"IO_ALLOCATION_ACTION"],[4,"POOL_TYPE"],[3,"UNICODE_STRING"],[3,"ANSI_STRING"],[8,"NativeString"]]}; +searchIndex["km"] = {"doc":"Windows Kernel Mode library.","items":[[0,"macros","km","Macros for Kernel-Mode drivers.",null,null],[0,"status","","NT Status codes.",null,null],[4,"Status","km::status","NT Status code.",null,null],[13,"success","","",0,null],[13,"unsuccessful","","",0,null],[5,"check","","Convert `Status` to `Result<()>`.",null,{"inputs":[{"name":"status"}],"output":{"name":"result"}}],[6,"NTSTATUS","","NT Status type.",null,null],[6,"Result","","A specialized `Result` type for NT operations.",null,null],[11,"clone","","",0,{"inputs":[{"name":"status"}],"output":{"name":"status"}}],[11,"is_ok","","Evaluates to `true` if the `Status` is a success type (`0..0x3FFFFFFF`)\nor an informational type (`0x40000000..0x7FFFFFFF`).",0,{"inputs":[{"name":"status"}],"output":{"name":"bool"}}],[11,"is_err","","Status is a warning or error type.",0,{"inputs":[{"name":"status"}],"output":{"name":"bool"}}],[11,"is_success","","Status is a success type.",0,{"inputs":[{"name":"status"}],"output":{"name":"bool"}}],[11,"is_information","","Status is a information type.",0,{"inputs":[{"name":"status"}],"output":{"name":"bool"}}],[11,"is_warning","","Status is a warning type.",0,{"inputs":[{"name":"status"}],"output":{"name":"bool"}}],[11,"is_error","","Status is a error type.",0,{"inputs":[{"name":"status"}],"output":{"name":"bool"}}],[0,"basedef","km","Kernel-Mode Types.",null,null],[3,"LIST_ENTRY","km::basedef","Doubly linked list structure.",null,null],[12,"next","","",1,null],[12,"prev","","",1,null],[3,"KSPIN_LOCK","","Spin Lock.",null,null],[12,"lock","","",2,null],[3,"DISPATCHER_HEADER","","Common dispatcher object header.",null,null],[12,"Type","","",3,null],[12,"Absolute","","",3,null],[12,"Size","","",3,null],[12,"Inserted","","",3,null],[12,"SignalState","","",3,null],[12,"WaitListHead","","",3,null],[3,"IO_STATUS_BLOCK","","An I/O status block.",null,null],[12,"Status","","",4,null],[12,"Information","","",4,null],[4,"KPROCESSOR_MODE","","Processor modes.",null,null],[13,"KernelMode","","",5,null],[13,"UserMode","","",5,null],[5,"KeGetCurrentIrql","","",null,null],[5,"KeRaiseIrqlToDpcLevel","","",null,null],[5,"KfLowerIrql","","",null,null],[5,"KfRaiseIrql","","",null,null],[0,"IO_PRIORITY","","I/O Request priority.",null,null],[6,"KPRIORITY_BOOST","km::basedef::IO_PRIORITY","I/O Request priority type.",null,null],[17,"IO_NO_INCREMENT","","",null,null],[17,"IO_DISK_INCREMENT","","",null,null],[17,"EVENT_INCREMENT","","",null,null],[6,"VOID","km::basedef","",null,null],[6,"PVOID","","",null,null],[6,"PCVOID","","",null,null],[6,"PETHREAD","","",null,null],[6,"PIO_APC_ROUTINE","","",null,null],[6,"PIO_STATUS_BLOCK","","",null,null],[0,"crt","km","C runtime library.",null,null],[5,"memcmp","km::crt","",null,null],[5,"memcpy","","",null,null],[5,"strlen","","",null,null],[5,"strcmp","","",null,null],[5,"strcpy","","",null,null],[5,"strcat","","",null,null],[5,"strncpy","","",null,null],[5,"wcslen","","",null,null],[5,"wcscpy","","",null,null],[5,"wcsncpy","","",null,null],[0,"debug","km","Debugger support.",null,null],[4,"DPFLTR_LEVEL","km::debug","`DbgPrintEx` Message severity.",null,null],[13,"ERROR","","",6,null],[13,"WARNING","","",6,null],[13,"TRACE","","",6,null],[13,"INFO","","",6,null],[4,"DPFLTR_ID","","`DbgPrintEx` Component name.",null,null],[13,"SYSTEM","","",7,null],[13,"SMSS","","",7,null],[13,"SETUP","","",7,null],[13,"NTFS","","",7,null],[13,"IHVDRIVER","","",7,null],[13,"IHVVIDEO","","",7,null],[13,"IHVAUDIO","","",7,null],[13,"IHVNETWORK","","",7,null],[13,"IHVSTREAMING","","",7,null],[13,"IHVBUS","","",7,null],[13,"DEFAULT","","",7,null],[5,"DbgPrint","","`DbgPrint` routine sends a message to the kernel debugger.",null,null],[5,"DbgPrintEx","","The `DbgPrintEx` routine sends a string to the kernel debugger if certain conditions are met.",null,null],[5,"DbgBreakPoint","","Breaks into the kernel debugger.",null,null],[5,"DbgBreakPointWithStatus","","Breaks into the kernel debugger and sends the value of `Status` to the debugger.",null,null],[0,"device_object","km","Device Object.",null,null],[3,"DEVICE_OBJECT","km::device_object","The `DEVICE_OBJECT` structure is used by the operating system to represent a device object.",null,null],[12,"Type","","",8,null],[12,"Size","","",8,null],[12,"ReferenceCount","","",8,null],[12,"DriverObject","","",8,null],[12,"NextDevice","","",8,null],[12,"AttachedDevice","","",8,null],[12,"CurrentIrp","","",8,null],[12,"Timer","","",8,null],[12,"Flags","","",8,null],[12,"Characteristics","","",8,null],[12,"Vpb","","",8,null],[12,"DeviceExtension","","",8,null],[12,"DeviceType","","",8,null],[12,"StackSize","","",8,null],[12,"Queue","","",8,null],[12,"AlignmentRequirement","","",8,null],[12,"DeviceQueue","","",8,null],[12,"Dpc","","",8,null],[12,"ActiveThreadCount","","",8,null],[12,"SecurityDescriptor","","",8,null],[12,"DeviceLock","","",8,null],[12,"SectorSize","","",8,null],[12,"Spare1","","",8,null],[12,"DeviceObjectExtension","","",8,null],[12,"Reserved","","",8,null],[3,"DEVOBJ_EXTENSION","","Device object extension structure.",null,null],[4,"DEVICE_FLAGS","","Device object flags.",null,null],[13,"NONE","","",9,null],[13,"DO_VERIFY_VOLUME","","",9,null],[13,"DO_BUFFERED_IO","","",9,null],[13,"DO_EXCLUSIVE","","",9,null],[13,"DO_DIRECT_IO","","",9,null],[13,"DO_MAP_IO_BUFFER","","",9,null],[13,"DO_DEVICE_HAS_NAME","","",9,null],[13,"DO_DEVICE_INITIALIZING","","",9,null],[13,"DO_SYSTEM_BOOT_PARTITION","","",9,null],[13,"DO_LONG_TERM_REQUESTS","","",9,null],[13,"DO_NEVER_LAST_DEVICE","","",9,null],[13,"DO_SHUTDOWN_REGISTERED","","",9,null],[13,"DO_BUS_ENUMERATED_DEVICE","","",9,null],[13,"DO_POWER_PAGABLE","","",9,null],[13,"DO_POWER_INRUSH","","",9,null],[13,"DO_POWER_NOOP","","",9,null],[13,"DO_LOW_PRIORITY_FILESYSTEM","","",9,null],[13,"DO_XIP","","",9,null],[5,"IoCreateDevice","","",null,null],[5,"IoDeleteDevice","","",null,null],[5,"IoCreateSymbolicLink","","",null,null],[5,"IoDeleteSymbolicLink","","",null,null],[6,"PDEVICE_OBJECT","","",null,null],[6,"PDRIVER_CANCEL","","",null,null],[6,"PDRIVER_DISPATCH","","",null,null],[6,"PIO_COMPLETION_ROUTINE","","",null,null],[0,"dpc","km","Deferred Procedure Calls (DPC).",null,null],[3,"KDPC","km::dpc","Deferred Procedure Call object.",null,null],[3,"KDPC_DATA","","DPC data structure definition.",null,null],[5,"KeInitializeDpc","","",null,null],[5,"KeInsertQueueDpc","","",null,null],[5,"KeRemoveQueueDpc","","",null,null],[5,"KeFlushQueuedDpcs","","",null,null],[5,"KeGenericCallDpc","","",null,null],[6,"PDEFERRED_ROUTINE","","",null,null],[0,"driver_object","km","Driver Object.",null,null],[3,"DRIVER_OBJECT","km::driver_object","Represents the image of a loaded kernel-mode driver.",null,null],[12,"Type","","",10,null],[12,"Size","","",10,null],[12,"DeviceObject","","",10,null],[12,"Flags","","",10,null],[12,"DriverStart","","",10,null],[12,"DriverSize","","",10,null],[12,"DriverSection","","",10,null],[12,"DriverExtension","","",10,null],[12,"DriverName","","",10,null],[12,"HardwareDatabase","","",10,null],[12,"FastIoDispatch","","",10,null],[12,"DriverInit","","",10,null],[12,"DriverStartIo","","",10,null],[12,"DriverUnload","","The entry point for the driver's Unload routine, if any.",10,null],[12,"MajorFunction","","A dispatch table consisting of an array of entry points for the driver's `DispatchXxx` routines.",10,null],[6,"PDRIVER_INITIALIZE","","",null,null],[6,"PDRIVER_STARTIO","","",null,null],[6,"PDRIVER_UNLOAD","","",null,null],[0,"event","km","Event Objects.",null,null],[3,"KEVENT","km::event","Event object.",null,null],[4,"EVENT_TYPE","","Specifies the event type.",null,null],[13,"NotificationEvent","","Manual-reset event.",11,null],[13,"SynchronizationEvent","","Auto-clearing event.",11,null],[5,"KeInitializeEvent","","",null,null],[5,"KeSetEvent","","",null,null],[5,"KeReadStateEvent","","",null,null],[5,"KeResetEvent","","",null,null],[5,"KeClearEvent","","",null,null],[6,"PKEVENT","","",null,null],[0,"file_object","km","File Object.",null,null],[3,"FILE_OBJECT","km::file_object","The `FILE_OBJECT` structure is used by the system to represent a file object.",null,null],[6,"PFILE_OBJECT","","",null,null],[0,"irp","km","I/O request packets (IRP).",null,null],[3,"IRP","km::irp","The `IRP` structure is a partial opaque structure that represents an I/O request packet.",null,null],[12,"Type","","",12,null],[12,"Size","","",12,null],[12,"MdlAddress","","Pointer to an `MDL` describing a user buffer, if the driver is using direct I/O.",12,null],[12,"Flags","","Flags word - used to remember various flags.",12,null],[12,"SystemBuffer","","Pointer to a system-space buffer if the driver is using buffered I/O.",12,null],[12,"ThreadListEntry","","",12,null],[12,"IoStatus","","I/O status - final status of operation.",12,null],[12,"RequestorMode","","Indicates the execution mode of the original requester of the operation.",12,null],[12,"PendingReturned","","If set to `TRUE`, a driver has marked the IRP pending.",12,null],[12,"StackCount","","Stack state information.",12,null],[12,"CurrentLocation","","Stack state information.",12,null],[12,"Cancel","","If set to `TRUE`, the IRP either is or should be canceled.",12,null],[12,"CancelIrql","","Irql at which the cancel spinlock was acquired.",12,null],[12,"ApcEnvironment","","",12,null],[12,"AllocationFlags","","Allocation control flags.",12,null],[12,"UserIosb","","User parameters.",12,null],[12,"UserEvent","","",12,null],[12,"UserApcRoutine","","",12,null],[12,"UserApcContext","","",12,null],[12,"CancelRoutine","","Contains the entry point for a driver-supplied `Cancel` routine to be called if the IRP is canceled.",12,null],[12,"UserBuffer","","Contains the address of an output buffer for `IRP_MJ_DEVICE_CONTROL`.",12,null],[12,"Overlay","","Kernel structures.",12,null],[3,"_IRP_OVERLAY","","Kernel structures for IRP.",null,null],[12,"DriverContext","","",13,null],[12,"Thread","","",13,null],[12,"AuxiliaryBuffer","","",13,null],[12,"ListEntry","","",13,null],[12,"CurrentStackLocation","","Current stack location.",13,null],[12,"OriginalFileObject","","",13,null],[3,"IO_STACK_LOCATION","","I/O Stack Locations.",null,null],[12,"MajorFunction","","The IRP major function code indicating the type of I/O operation to be performed.",14,null],[12,"MinorFunction","","A subfunction code for `MajorFunction`.",14,null],[12,"Flags","","Request-type-specific values (see [DEVICE_FLAGS](../device_object/enum.DEVICE_FLAGS.html)).",14,null],[12,"Control","","",14,null],[12,"Parameters","","A union that depends on the major and minor IRP function code values\ncontained in `MajorFunction` and `MinorFunction`.",14,null],[12,"DeviceObject","","A pointer to the driver-created `DEVICE_OBJECT` structure\nrepresenting the target physical, logical, or virtual device for which this driver is to handle the IRP.",14,null],[12,"FileObject","","A pointer to a `FILE_OBJECT` structure that represents the file object, if any, that is associated with `DeviceObject` pointer.",14,null],[12,"CompletionRoutine","","The following routine is invoked depending on the flags in the above `Flags` field.",14,null],[12,"Context","","The following is used to store the address of the context parameter that should be passed to the `CompletionRoutine`.",14,null],[3,"_IO_STACK_LOCATION_READ","","Parameters for `IRP_MJ_READ`.",null,null],[12,"Length","","",15,null],[12,"Key","","",15,null],[12,"ByteOffset","","",15,null],[4,"IRP_MJ","","`IRP` Major Function Codes.",null,null],[13,"CREATE","","",16,null],[13,"CREATE_NAMED_PIPE","","",16,null],[13,"CLOSE","","",16,null],[13,"READ","","",16,null],[13,"WRITE","","",16,null],[13,"QUERY_INFORMATION","","",16,null],[13,"SET_INFORMATION","","",16,null],[13,"QUERY_EA","","",16,null],[13,"SET_EA","","",16,null],[13,"FLUSH_BUFFERS","","",16,null],[13,"QUERY_VOLUME_INFORMATION","","",16,null],[13,"SET_VOLUME_INFORMATION","","",16,null],[13,"DIRECTORY_CONTROL","","",16,null],[13,"FILE_SYSTEM_CONTROL","","",16,null],[13,"DEVICE_CONTROL","","",16,null],[13,"INTERNAL_DEVICE_CONTROL","","",16,null],[13,"SHUTDOWN","","",16,null],[13,"LOCK_CONTROL","","",16,null],[13,"CLEANUP","","",16,null],[13,"CREATE_MAILSLOT","","",16,null],[13,"QUERY_SECURITY","","",16,null],[13,"SET_SECURITY","","",16,null],[13,"POWER","","",16,null],[13,"SYSTEM_CONTROL","","",16,null],[13,"DEVICE_CHANGE","","",16,null],[13,"QUERY_QUOTA","","",16,null],[13,"SET_QUOTA","","",16,null],[13,"PNP","","",16,null],[13,"MAXIMUM_FUNCTION","","",16,null],[6,"PIRP","","",null,null],[6,"PIO_STACK_LOCATION","","",null,null],[11,"get_current_stack_location","","Returns a pointer to the caller's stack location in the given `IRP`.",12,{"inputs":[{"name":"irp"}],"output":{"name":"io_stack_location"}}],[11,"complete_request","","Indicates that the caller has completed all processing for a given I/O request\nand is returning the given IRP to the I/O manager.",12,{"inputs":[{"name":"irp"},{"name":"ntstatus"}],"output":{"name":"ntstatus"}}],[11,"ParametersRead","","Access parameters for `IRP_MJ_READ`.",14,{"inputs":[{"name":"io_stack_location"}],"output":{"name":"_io_stack_location_read"}}],[0,"irql","km","Interrupt Request Level (IRQL).",null,null],[6,"KIRQL","km::irql","IRQL type.",null,null],[17,"PASSIVE_LEVEL","","Passive release level, no interrupt vectors are masked.",null,null],[17,"LOW_LEVEL","","The lowest IRQL level, no interrupt vectors are masked.",null,null],[17,"APC_LEVEL","","APC interrupt level.",null,null],[17,"DISPATCH_LEVEL","","Dispatcher level",null,null],[17,"PROFILE_LEVEL","","Timer used for profiling.",null,null],[17,"CLOCK_LEVEL","","Interval clock level.",null,null],[17,"IPI_LEVEL","","Interprocessor interrupt level.",null,null],[17,"POWER_LEVEL","","Power failure level.",null,null],[17,"HIGH_LEVEL","","Highest interrupt level.",null,null],[17,"SYNCH_LEVEL","","Synchronization level.",null,null],[0,"object","km","Kernel Objects.",null,null],[3,"WAIT_CONTEXT_BLOCK","km::object","",null,null],[3,"KDEVICE_QUEUE_ENTRY","","",null,null],[3,"KDEVICE_QUEUE","","",null,null],[4,"IO_ALLOCATION_ACTION","","",null,null],[13,"KeepObject","","",17,null],[13,"DeallocateObject","","",17,null],[13,"DeallocateObjectKeepRegisters","","",17,null],[0,"pool","km","Kernel Mode pools.",null,null],[4,"POOL_TYPE","km::pool","Specifies the type of system memory to allocate.",null,null],[13,"NonPagedPool","","Nonpageable system memory, can be accessed from any IRQL.",18,null],[13,"PagedPool","","Pageable system memory, can only be allocated and accessed at IRQL < DISPATCH_LEVEL.",18,null],[13,"NonPagedPoolMustSucceed","","",18,null],[13,"DontUseThisType","","",18,null],[13,"NonPagedPoolCacheAligned","","Nonpaged pool, aligned on processor cache boundaries.",18,null],[13,"PagedPoolCacheAligned","","Paged pool, aligned on processor cache boundaries.",18,null],[13,"NonPagedPoolCacheAlignedMustS","","",18,null],[13,"MaxPoolType","","",18,null],[13,"NonPagedPoolSession","","",18,null],[13,"PagedPoolSession","","",18,null],[13,"NonPagedPoolMustSucceedSession","","",18,null],[13,"DontUseThisTypeSession","","",18,null],[13,"NonPagedPoolCacheAlignedSession","","",18,null],[13,"PagedPoolCacheAlignedSession","","",18,null],[13,"NonPagedPoolCacheAlignedMustSSession","","",18,null],[5,"ExAllocatePoolWithTag","","Allocates pool memory of the specified type and tag.",null,null],[5,"ExFreePoolWithTag","","Deallocates a block of pool memory allocated with the specified tag.",null,null],[5,"ExAllocatePool","","Allocates pool memory of the specified type.",null,null],[5,"ExFreePool","","Deallocates a block of pool memory.",null,null],[0,"rtl","km","NT runtime routines.",null,null],[5,"RtlRandom","km::rtl","Returns a random number that was generated from a given `seed` value in the range `[0..MAXLONG-1]`.",null,null],[5,"RtlRandomEx","","Returns a random number that was generated from a given `seed` value in the range `[0..MAXLONG-1]`.",null,null],[5,"RtlUniform","","A simple uniform random number generator, based on D.H. Lehmer's 1948 alrogithm.",null,null],[0,"shared","km","Data shared between kernel and user mode.",null,null],[3,"KSYSTEM_TIME","km::shared","Dystem time structure",null,null],[3,"KUSER_SHARED_DATA","","The data shared between kernel and user mode.",null,null],[12,"TickCountLowDeprecated","","",19,null],[12,"TickCountMultiplier","","",19,null],[12,"InterruptTime","","Current 64-bit interrupt time in 100ns units.",19,null],[12,"SystemTime","","Current 64-bit system time in 100ns units.",19,null],[12,"TimeZoneBias","","Current 64-bit time zone bias.",19,null],[12,"ImageNumberLow","","",19,null],[12,"ImageNumberHigh","","",19,null],[12,"NtSystemRoot","","",19,null],[12,"MaxStackTraceDepth","","",19,null],[12,"CryptoExponent","","",19,null],[12,"TimeZoneId","","",19,null],[12,"LargePageMinimum","","",19,null],[12,"Reserved2","","",19,null],[12,"NtProductType","","",19,null],[12,"ProductTypeIsValid","","",19,null],[12,"NtMajorVersion","","",19,null],[12,"NtMinorVersion","","",19,null],[12,"ProcessorFeatures","","",19,null],[12,"Reserved1","","",19,null],[12,"Reserved3","","",19,null],[12,"TimeSlip","","",19,null],[12,"AlternativeArchitecture","","",19,null],[12,"SystemExpirationDate","","",19,null],[12,"SuiteMask","","",19,null],[12,"KdDebuggerEnabled","","True if a kernel debugger is connected/enabled.",19,null],[12,"NXSupportPolicy","","",19,null],[12,"ActiveConsoleId","","",19,null],[12,"DismountCount","","",19,null],[12,"ComPlusPackage","","",19,null],[12,"LastSystemRITEventTickCount","","",19,null],[12,"NumberOfPhysicalPages","","",19,null],[12,"SafeBootMode","","True if the system was booted in safe boot mode.",19,null],[12,"TraceLogging","","",19,null],[12,"TestRetInstruction","","",19,null],[12,"SystemCall","","",19,null],[12,"SystemCallReturn","","",19,null],[12,"SystemCallPad","","",19,null],[12,"TickCount","","The 64-bit tick count.",19,null],[12,"Cookie","","Cookie for encoding pointers system wide.",19,null],[4,"NT_PRODUCT_TYPE","","",null,null],[13,"NtProductWinNt","","",20,null],[13,"NtProductLanManNt","","",20,null],[13,"NtProductServer","","",20,null],[4,"ALTERNATIVE_ARCHITECTURE_TYPE","","",null,null],[13,"StandardDesign","","",21,null],[13,"NEC98x86","","",21,null],[13,"EndAlternatives","","",21,null],[6,"SYSTEMTIME","","System time is a count of 100-nanosecond intervals since January 1, 1601.",null,null],[11,"clone","","",22,{"inputs":[{"name":"ksystem_time"}],"output":{"name":"ksystem_time"}}],[11,"get","","Get reference to the mapped shared data.",19,{"inputs":[],"output":{"name":"kuser_shared_data"}}],[11,"from","","",23,{"inputs":[{"name":"ksystem_time"}],"output":{"name":"self"}}],[0,"string","km","Kernel mode string types.",null,null],[3,"UNICODE_STRING","km::string","A counted Unicode string.",null,null],[12,"Length","","The length in **bytes** of the string stored in `Buffer`.",24,null],[12,"MaximumLength","","The length in **bytes** of `Buffer`.",24,null],[12,"Buffer","","Pointer to a buffer used to contain a string of wide characters.",24,null],[3,"ANSI_STRING","","A counted string used for ANSI strings.",null,null],[12,"Length","","The length in *bytes* of the string stored in `Buffer`.",25,null],[12,"MaximumLength","","The length in bytes of `Buffer`.",25,null],[12,"Buffer","","Pointer to a buffer used to contain a string of characters.",25,null],[5,"RtlIntegerToUnicodeString","","",null,null],[5,"RtlInt64ToUnicodeString","","",null,null],[5,"RtlUnicodeStringToInteger","","",null,null],[5,"RtlUnicodeStringToAnsiString","","",null,null],[5,"RtlUnicodeStringToAnsiSize","","",null,null],[5,"RtlAnsiStringToUnicodeString","","",null,null],[5,"RtlAnsiStringToUnicodeSize","","",null,null],[5,"RtlCompareUnicodeString","","",null,null],[5,"RtlCompareString","","",null,null],[5,"RtlEqualUnicodeString","","",null,null],[5,"RtlEqualString","","",null,null],[5,"RtlFreeAnsiString","","",null,null],[5,"RtlFreeUnicodeString","","",null,null],[6,"AnsiString","","",null,null],[6,"UnicodeString","","",null,null],[6,"CONST_UNICODE_STRING","","",null,null],[6,"CONST_ANSI_STRING","","",null,null],[8,"NativeString","","NT native string types.",null,null],[10,"size","","Size of string in bytes.",26,{"inputs":[{"name":"nativestring"}],"output":{"name":"u16"}}],[10,"max_size","","Size of buffer in bytes.",26,{"inputs":[{"name":"nativestring"}],"output":{"name":"u16"}}],[11,"is_empty","","Check is the string is empty.",26,{"inputs":[{"name":"nativestring"}],"output":{"name":"bool"}}],[11,"size","","",24,{"inputs":[{"name":"unicode_string"}],"output":{"name":"u16"}}],[11,"max_size","","",24,{"inputs":[{"name":"unicode_string"}],"output":{"name":"u16"}}],[11,"default","","",24,{"inputs":[],"output":{"name":"self"}}],[11,"from","","",25,null],[0,"time","km","NT Time routines.",null,null],[5,"QuerySystemTime","km::time","Obtains the current system time.",null,{"inputs":[],"output":{"name":"systemtime"}}],[5,"QueryTickCount","","A count of the interval timer interrupts that have occurred since the system was booted.",null,{"inputs":[],"output":{"name":"i64"}}],[5,"ExSystemTimeToLocalTime","","Converts a GMT system time value to the local system time for the current time zone.",null,null],[14,"KdPrint!","km","Macro to send a message to the kernel debugger.",null,null],[14,"KdPrint_u!","","Macro to send a message to the kernel debugger for unsafe blocks.",null,null],[14,"check_unsafe!","","",null,null]],"paths":[[4,"Status"],[3,"LIST_ENTRY"],[3,"KSPIN_LOCK"],[3,"DISPATCHER_HEADER"],[3,"IO_STATUS_BLOCK"],[4,"KPROCESSOR_MODE"],[4,"DPFLTR_LEVEL"],[4,"DPFLTR_ID"],[3,"DEVICE_OBJECT"],[4,"DEVICE_FLAGS"],[3,"DRIVER_OBJECT"],[4,"EVENT_TYPE"],[3,"IRP"],[3,"_IRP_OVERLAY"],[3,"IO_STACK_LOCATION"],[3,"_IO_STACK_LOCATION_READ"],[4,"IRP_MJ"],[4,"IO_ALLOCATION_ACTION"],[4,"POOL_TYPE"],[3,"KUSER_SHARED_DATA"],[4,"NT_PRODUCT_TYPE"],[4,"ALTERNATIVE_ARCHITECTURE_TYPE"],[3,"KSYSTEM_TIME"],[6,"SYSTEMTIME"],[3,"UNICODE_STRING"],[3,"ANSI_STRING"],[8,"NativeString"]]}; initSearch(searchIndex); diff --git a/doc/src/km/lib.rs.html b/doc/src/km/lib.rs.html index 12c52e0..6f168ce 100644 --- a/doc/src/km/lib.rs.html +++ b/doc/src/km/lib.rs.html @@ -97,6 +97,7 @@ 53 54 55 +56
 //! Windows Kernel Mode library.
 
@@ -127,6 +128,7 @@
 pub mod object;
 pub mod pool;
 pub mod rtl;
+pub mod shared;
 pub mod string;
 pub mod time;
 
diff --git a/doc/src/km/shared.rs.html b/doc/src/km/shared.rs.html
new file mode 100644
index 0000000..a53cb51
--- /dev/null
+++ b/doc/src/km/shared.rs.html
@@ -0,0 +1,414 @@
+
+
+
+    
+    
+    
+    
+    
+
+    shared.rs.html -- source
+
+    
+    
+    
+
+    
+    
+
+
+    
+
+    
+
+    
+
+    
+
+    
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+
+//! Data shared between kernel and user mode.
+
+
+/// System time is a count of 100-nanosecond intervals since January 1, 1601.
+pub type SYSTEMTIME = i64;
+
+
+/// Dystem time structure
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct KSYSTEM_TIME
+{
+	LowPart: u32,
+	High1Time: i32,
+	High2Time: i32,
+}
+
+#[repr(C)]
+pub enum NT_PRODUCT_TYPE
+{
+	NtProductWinNt = 1,
+	NtProductLanManNt,
+	NtProductServer
+}
+
+#[repr(C)]
+pub enum ALTERNATIVE_ARCHITECTURE_TYPE
+{
+	StandardDesign,
+	NEC98x86,
+	EndAlternatives,
+}
+
+/// The data shared between kernel and user mode.
+#[repr(C)]
+pub struct KUSER_SHARED_DATA
+{
+	pub TickCountLowDeprecated: u32,
+	pub TickCountMultiplier: u32,
+
+	/// Current 64-bit interrupt time in 100ns units.
+	pub InterruptTime: KSYSTEM_TIME,
+	/// Current 64-bit system time in 100ns units.
+	pub SystemTime: KSYSTEM_TIME,
+	/// Current 64-bit time zone bias.
+	pub TimeZoneBias: KSYSTEM_TIME,
+
+	pub ImageNumberLow: u16,
+	pub ImageNumberHigh: u16,
+
+	pub NtSystemRoot: [u16; 260],
+
+	pub MaxStackTraceDepth: u32,
+	pub CryptoExponent: u32,
+	pub TimeZoneId: u32,
+	pub LargePageMinimum: u32,
+	pub Reserved2: [u32; 7],
+
+	pub NtProductType: NT_PRODUCT_TYPE,
+	pub ProductTypeIsValid: bool,
+	pub NtMajorVersion: u32,
+	pub NtMinorVersion: u32,
+
+	pub ProcessorFeatures: [bool; 64],
+	pub Reserved1: u32,
+	pub Reserved3: u32,
+	pub TimeSlip: u32,
+
+	pub AlternativeArchitecture: ALTERNATIVE_ARCHITECTURE_TYPE,
+	pub SystemExpirationDate: u64,
+	pub SuiteMask: u32,
+
+	/// True if a kernel debugger is connected/enabled.
+	pub KdDebuggerEnabled: bool,
+	pub NXSupportPolicy: u8,
+	pub ActiveConsoleId: u32,
+	pub DismountCount: u32,
+	pub ComPlusPackage: u32,
+	pub LastSystemRITEventTickCount: u32,
+	pub NumberOfPhysicalPages: u32,
+
+	/// True if the system was booted in safe boot mode.
+	pub SafeBootMode: bool,
+	pub TraceLogging: u32,
+
+	pub TestRetInstruction: u64,
+	pub SystemCall: u32,
+	pub SystemCallReturn: u32,
+	pub SystemCallPad: [u64; 3],
+
+	/// The 64-bit tick count.
+	pub TickCount: KSYSTEM_TIME,
+
+	/// Cookie for encoding pointers system wide.
+	pub Cookie: u32,
+
+	// NT 6.0+:
+
+			#[cfg(target_arch = "x86_64")]
+	pub Wow64SharedInformation: [u32; 16],
+			#[cfg(target_arch = "x86_64")]
+	pub UserModeGlobalLogger: [u16; 8],
+			#[cfg(target_arch = "x86_64")]
+	pub HeapTracingPid: [u32; 2],
+			#[cfg(target_arch = "x86_64")]
+	pub CritSecTracingPid: [u32; 2],
+			#[cfg(target_arch = "x86_64")]
+	pub ImageFileExecutionOptions: u32,
+			#[cfg(target_arch = "x86_64")]
+	pub ActiveProcessorAffinity: u64,
+			#[cfg(target_arch = "x86_64")]
+	pub InterruptTimeBias: u64,
+}
+
+#[cfg(target_arch = "x86")]
+const KI_USER_SHARED_DATA: *const KUSER_SHARED_DATA = 0xffdf_0000 as *const KUSER_SHARED_DATA;
+
+#[cfg(target_arch = "x86_64")]
+const KI_USER_SHARED_DATA: *const KUSER_SHARED_DATA = 0xFFFF_F780_0000_0000 as *const KUSER_SHARED_DATA;
+
+impl KUSER_SHARED_DATA {
+
+	/// Get reference to the mapped shared data.
+	pub fn get() -> &'static KUSER_SHARED_DATA {
+		unsafe { &*KI_USER_SHARED_DATA }
+	}
+}
+
+/// Convert `KSYSTEM_TIME` to `i64`
+#[cfg(target_arch = "x86_64")]
+impl ::core::convert::From<KSYSTEM_TIME> for SYSTEMTIME {
+	fn from(time: KSYSTEM_TIME) -> Self {
+		unsafe { *(&time as *const KSYSTEM_TIME as *const SYSTEMTIME) }
+	}
+}
+
+/// Convert `KSYSTEM_TIME` to `i64`
+#[cfg(target_arch = "x86")]
+impl ::core::convert::From<KSYSTEM_TIME> for SYSTEMTIME {
+	fn from(time: KSYSTEM_TIME) -> Self {
+		// FIXME: is any `volatile` or memory fenses need here?
+		let mut lo;
+		let mut hi;
+		loop {
+			hi = time.High1Time;
+			lo = time.LowPart;
+			if hi == time.High2Time {
+				break;
+			}
+		}
+		return (hi as i64) << 32 | lo as i64
+	}
+}
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/src/km/time.rs.html b/doc/src/km/time.rs.html index 2476c7d..abcc81e 100644 --- a/doc/src/km/time.rs.html +++ b/doc/src/km/time.rs.html @@ -68,33 +68,89 @@ 24 25 26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54
 //! NT Time routines.
 
-/// System time is a count of 100-nanosecond intervals since January 1, 1601.
-pub type SYSTEMTIME = i64;
+use ::shared::{SYSTEMTIME};
+
+#[cfg(target_arch = "x86_64")]
+use ::shared::{KUSER_SHARED_DATA};
+
 
 extern "system"
 {
+	// The following exports exists only on x86 kernels.
+	// x64 drivers must use KUSER_SHARED_DATA to obtain these values.
+
+	#[cfg(target_arch = "x86")]
 	fn KeQuerySystemTime(CurrentTime: *mut SYSTEMTIME);
+	#[cfg(target_arch = "x86")]
 	fn KeQueryTickCount(TickCount: *mut i64);
+
 	/// Converts a GMT system time value to the local system time for the current time zone.
 	pub fn ExSystemTimeToLocalTime(SystemTime: *const SYSTEMTIME, LocalTime: *mut SYSTEMTIME);
 }
 
+
 /// Obtains the current system time.
+#[cfg(target_arch = "x86")]
 pub fn QuerySystemTime() -> SYSTEMTIME {
 	let mut t = 0i64;
 	unsafe { KeQuerySystemTime(&mut t) };
 	return t;
 }
 
+/// Obtains the current system time.
+#[cfg(target_arch = "x86_64")]
+pub fn QuerySystemTime() -> SYSTEMTIME {
+	let shared = KUSER_SHARED_DATA::get();
+	SYSTEMTIME::from(shared.SystemTime)
+}
+
+
 /// A count of the interval timer interrupts that have occurred since the system was booted.
+#[cfg(target_arch = "x86")]
 pub fn QueryTickCount() -> i64 {
 	let mut t = 0i64;
 	unsafe { KeQueryTickCount(&mut t) };
 	return t;
 }
+
+
+/// A count of the interval timer interrupts that have occurred since the system was booted.
+#[cfg(target_arch = "x86_64")]
+pub fn QueryTickCount() -> i64 {
+	let shared = KUSER_SHARED_DATA::get();
+	SYSTEMTIME::from(shared.TickCount)
+}
 
-- cgit v1.2.3