@@ -287,7 +287,6 @@ pub const STATUS_INVALID_PARAMETER: NTSTATUS = 0xc000000d_u32 as _;
287
287
288
288
pub const STATUS_PENDING : NTSTATUS = 0x103 as _ ;
289
289
pub const STATUS_END_OF_FILE : NTSTATUS = 0xC0000011_u32 as _ ;
290
- pub const STATUS_NOT_IMPLEMENTED : NTSTATUS = 0xC0000002_u32 as _ ;
291
290
292
291
// Equivalent to the `NT_SUCCESS` C preprocessor macro.
293
292
// See: https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/using-ntstatus-values
@@ -1262,6 +1261,46 @@ extern "system" {
1262
1261
) -> NTSTATUS ;
1263
1262
}
1264
1263
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
+
1265
1304
// Functions that aren't available on every version of Windows that we support,
1266
1305
// but we still use them and just provide some form of a fallback implementation.
1267
1306
compat_fn_with_fallback ! {
@@ -1302,52 +1341,6 @@ compat_fn_optional! {
1302
1341
compat_fn_with_fallback ! {
1303
1342
pub static NTDLL : & CStr = ansi_str!( "ntdll" ) ;
1304
1343
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
- }
1351
1344
pub fn NtCreateKeyedEvent (
1352
1345
KeyedEventHandle : LPHANDLE ,
1353
1346
DesiredAccess : ACCESS_MASK ,
0 commit comments