@@ -296,7 +296,6 @@ pub const STATUS_INVALID_PARAMETER: NTSTATUS = 0xc000000d_u32 as _;
296
296
297
297
pub const STATUS_PENDING : NTSTATUS = 0x103 as _ ;
298
298
pub const STATUS_END_OF_FILE : NTSTATUS = 0xC0000011_u32 as _ ;
299
- pub const STATUS_NOT_IMPLEMENTED : NTSTATUS = 0xC0000002_u32 as _ ;
300
299
301
300
// Equivalent to the `NT_SUCCESS` C preprocessor macro.
302
301
// See: https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/using-ntstatus-values
@@ -1282,6 +1281,46 @@ extern "system" {
1282
1281
) -> NTSTATUS ;
1283
1282
}
1284
1283
1284
+ #[ link( name = "ntdll" ) ]
1285
+ extern "system" {
1286
+ pub fn NtCreateFile (
1287
+ FileHandle : * mut HANDLE ,
1288
+ DesiredAccess : ACCESS_MASK ,
1289
+ ObjectAttributes : * const OBJECT_ATTRIBUTES ,
1290
+ IoStatusBlock : * mut IO_STATUS_BLOCK ,
1291
+ AllocationSize : * mut i64 ,
1292
+ FileAttributes : ULONG ,
1293
+ ShareAccess : ULONG ,
1294
+ CreateDisposition : ULONG ,
1295
+ CreateOptions : ULONG ,
1296
+ EaBuffer : * mut c_void ,
1297
+ EaLength : ULONG ,
1298
+ ) -> NTSTATUS ;
1299
+ pub fn NtReadFile (
1300
+ FileHandle : BorrowedHandle < ' _ > ,
1301
+ Event : HANDLE ,
1302
+ ApcRoutine : Option < IO_APC_ROUTINE > ,
1303
+ ApcContext : * mut c_void ,
1304
+ IoStatusBlock : & mut IO_STATUS_BLOCK ,
1305
+ Buffer : * mut crate :: mem:: MaybeUninit < u8 > ,
1306
+ Length : ULONG ,
1307
+ ByteOffset : Option < & LARGE_INTEGER > ,
1308
+ Key : Option < & ULONG > ,
1309
+ ) -> NTSTATUS ;
1310
+ pub fn NtWriteFile (
1311
+ FileHandle : BorrowedHandle < ' _ > ,
1312
+ Event : HANDLE ,
1313
+ ApcRoutine : Option < IO_APC_ROUTINE > ,
1314
+ ApcContext : * mut c_void ,
1315
+ IoStatusBlock : & mut IO_STATUS_BLOCK ,
1316
+ Buffer : * const u8 ,
1317
+ Length : ULONG ,
1318
+ ByteOffset : Option < & LARGE_INTEGER > ,
1319
+ Key : Option < & ULONG > ,
1320
+ ) -> NTSTATUS ;
1321
+ pub fn RtlNtStatusToDosError ( Status : NTSTATUS ) -> ULONG ;
1322
+ }
1323
+
1285
1324
// Functions that aren't available on every version of Windows that we support,
1286
1325
// but we still use them and just provide some form of a fallback implementation.
1287
1326
compat_fn_with_fallback ! {
@@ -1322,52 +1361,6 @@ compat_fn_optional! {
1322
1361
compat_fn_with_fallback ! {
1323
1362
pub static NTDLL : & CStr = ansi_str!( "ntdll" ) ;
1324
1363
1325
- pub fn NtCreateFile (
1326
- FileHandle : * mut HANDLE ,
1327
- DesiredAccess : ACCESS_MASK ,
1328
- ObjectAttributes : * const OBJECT_ATTRIBUTES ,
1329
- IoStatusBlock : * mut IO_STATUS_BLOCK ,
1330
- AllocationSize : * mut i64 ,
1331
- FileAttributes : ULONG ,
1332
- ShareAccess : ULONG ,
1333
- CreateDisposition : ULONG ,
1334
- CreateOptions : ULONG ,
1335
- EaBuffer : * mut c_void,
1336
- EaLength : ULONG
1337
- ) -> NTSTATUS {
1338
- STATUS_NOT_IMPLEMENTED
1339
- }
1340
- pub fn NtReadFile (
1341
- FileHandle : BorrowedHandle <' _>,
1342
- Event : HANDLE ,
1343
- ApcRoutine : Option <IO_APC_ROUTINE >,
1344
- ApcContext : * mut c_void,
1345
- IoStatusBlock : & mut IO_STATUS_BLOCK ,
1346
- Buffer : * mut crate :: mem:: MaybeUninit <u8 >,
1347
- Length : ULONG ,
1348
- ByteOffset : Option <& LARGE_INTEGER >,
1349
- Key : Option <& ULONG >
1350
- ) -> NTSTATUS {
1351
- STATUS_NOT_IMPLEMENTED
1352
- }
1353
- pub fn NtWriteFile (
1354
- FileHandle : BorrowedHandle <' _>,
1355
- Event : HANDLE ,
1356
- ApcRoutine : Option <IO_APC_ROUTINE >,
1357
- ApcContext : * mut c_void,
1358
- IoStatusBlock : & mut IO_STATUS_BLOCK ,
1359
- Buffer : * const u8 ,
1360
- Length : ULONG ,
1361
- ByteOffset : Option <& LARGE_INTEGER >,
1362
- Key : Option <& ULONG >
1363
- ) -> NTSTATUS {
1364
- STATUS_NOT_IMPLEMENTED
1365
- }
1366
- pub fn RtlNtStatusToDosError (
1367
- Status : NTSTATUS
1368
- ) -> ULONG {
1369
- Status as ULONG
1370
- }
1371
1364
pub fn NtCreateKeyedEvent (
1372
1365
KeyedEventHandle : LPHANDLE ,
1373
1366
DesiredAccess : ACCESS_MASK ,
0 commit comments