@@ -287,7 +287,6 @@ pub const STATUS_INVALID_PARAMETER: NTSTATUS = 0xc000000d_u32 as _;
287287
288288pub const STATUS_PENDING : NTSTATUS = 0x103 as _ ;
289289pub const STATUS_END_OF_FILE : NTSTATUS = 0xC0000011_u32 as _ ;
290- pub const STATUS_NOT_IMPLEMENTED : NTSTATUS = 0xC0000002_u32 as _ ;
291290
292291// Equivalent to the `NT_SUCCESS` C preprocessor macro.
293292// See: https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/using-ntstatus-values
@@ -1262,6 +1261,46 @@ extern "system" {
12621261 ) -> NTSTATUS ;
12631262}
12641263
1264+ #[ link( name = "ntdll" ) ]
1265+ extern "system" {
1266+ pub fn NtCreateFile (
1267+ FileHandle : * mut HANDLE ,
1268+ DesiredAccess : ACCESS_MASK ,
1269+ ObjectAttributes : * const OBJECT_ATTRIBUTES ,
1270+ IoStatusBlock : * mut IO_STATUS_BLOCK ,
1271+ AllocationSize : * mut i64 ,
1272+ FileAttributes : ULONG ,
1273+ ShareAccess : ULONG ,
1274+ CreateDisposition : ULONG ,
1275+ CreateOptions : ULONG ,
1276+ EaBuffer : * mut c_void ,
1277+ EaLength : ULONG ,
1278+ ) -> NTSTATUS ;
1279+ pub fn NtReadFile (
1280+ FileHandle : BorrowedHandle < ' _ > ,
1281+ Event : HANDLE ,
1282+ ApcRoutine : Option < IO_APC_ROUTINE > ,
1283+ ApcContext : * mut c_void ,
1284+ IoStatusBlock : & mut IO_STATUS_BLOCK ,
1285+ Buffer : * mut crate :: mem:: MaybeUninit < u8 > ,
1286+ Length : ULONG ,
1287+ ByteOffset : Option < & LARGE_INTEGER > ,
1288+ Key : Option < & ULONG > ,
1289+ ) -> NTSTATUS ;
1290+ pub fn NtWriteFile (
1291+ FileHandle : BorrowedHandle < ' _ > ,
1292+ Event : HANDLE ,
1293+ ApcRoutine : Option < IO_APC_ROUTINE > ,
1294+ ApcContext : * mut c_void ,
1295+ IoStatusBlock : & mut IO_STATUS_BLOCK ,
1296+ Buffer : * const u8 ,
1297+ Length : ULONG ,
1298+ ByteOffset : Option < & LARGE_INTEGER > ,
1299+ Key : Option < & ULONG > ,
1300+ ) -> NTSTATUS ;
1301+ pub fn RtlNtStatusToDosError ( Status : NTSTATUS ) -> ULONG ;
1302+ }
1303+
12651304// Functions that aren't available on every version of Windows that we support,
12661305// but we still use them and just provide some form of a fallback implementation.
12671306compat_fn_with_fallback ! {
@@ -1302,52 +1341,6 @@ compat_fn_optional! {
13021341compat_fn_with_fallback ! {
13031342 pub static NTDLL : & CStr = ansi_str!( "ntdll" ) ;
13041343
1305- pub fn NtCreateFile (
1306- FileHandle : * mut HANDLE ,
1307- DesiredAccess : ACCESS_MASK ,
1308- ObjectAttributes : * const OBJECT_ATTRIBUTES ,
1309- IoStatusBlock : * mut IO_STATUS_BLOCK ,
1310- AllocationSize : * mut i64 ,
1311- FileAttributes : ULONG ,
1312- ShareAccess : ULONG ,
1313- CreateDisposition : ULONG ,
1314- CreateOptions : ULONG ,
1315- EaBuffer : * mut c_void,
1316- EaLength : ULONG
1317- ) -> NTSTATUS {
1318- STATUS_NOT_IMPLEMENTED
1319- }
1320- pub fn NtReadFile (
1321- FileHandle : BorrowedHandle <' _>,
1322- Event : HANDLE ,
1323- ApcRoutine : Option <IO_APC_ROUTINE >,
1324- ApcContext : * mut c_void,
1325- IoStatusBlock : & mut IO_STATUS_BLOCK ,
1326- Buffer : * mut crate :: mem:: MaybeUninit <u8 >,
1327- Length : ULONG ,
1328- ByteOffset : Option <& LARGE_INTEGER >,
1329- Key : Option <& ULONG >
1330- ) -> NTSTATUS {
1331- STATUS_NOT_IMPLEMENTED
1332- }
1333- pub fn NtWriteFile (
1334- FileHandle : BorrowedHandle <' _>,
1335- Event : HANDLE ,
1336- ApcRoutine : Option <IO_APC_ROUTINE >,
1337- ApcContext : * mut c_void,
1338- IoStatusBlock : & mut IO_STATUS_BLOCK ,
1339- Buffer : * const u8 ,
1340- Length : ULONG ,
1341- ByteOffset : Option <& LARGE_INTEGER >,
1342- Key : Option <& ULONG >
1343- ) -> NTSTATUS {
1344- STATUS_NOT_IMPLEMENTED
1345- }
1346- pub fn RtlNtStatusToDosError (
1347- Status : NTSTATUS
1348- ) -> ULONG {
1349- Status as ULONG
1350- }
13511344 pub fn NtCreateKeyedEvent (
13521345 KeyedEventHandle : LPHANDLE ,
13531346 DesiredAccess : ACCESS_MASK ,
0 commit comments