@@ -296,7 +296,6 @@ pub const STATUS_INVALID_PARAMETER: NTSTATUS = 0xc000000d_u32 as _;
296296
297297pub const STATUS_PENDING : NTSTATUS = 0x103 as _ ;
298298pub const STATUS_END_OF_FILE : NTSTATUS = 0xC0000011_u32 as _ ;
299- pub const STATUS_NOT_IMPLEMENTED : NTSTATUS = 0xC0000002_u32 as _ ;
300299
301300// Equivalent to the `NT_SUCCESS` C preprocessor macro.
302301// See: https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/using-ntstatus-values
@@ -1282,6 +1281,46 @@ extern "system" {
12821281 ) -> NTSTATUS ;
12831282}
12841283
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+
12851324// Functions that aren't available on every version of Windows that we support,
12861325// but we still use them and just provide some form of a fallback implementation.
12871326compat_fn_with_fallback ! {
@@ -1322,52 +1361,6 @@ compat_fn_optional! {
13221361compat_fn_with_fallback ! {
13231362 pub static NTDLL : & CStr = ansi_str!( "ntdll" ) ;
13241363
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- }
13711364 pub fn NtCreateKeyedEvent (
13721365 KeyedEventHandle : LPHANDLE ,
13731366 DesiredAccess : ACCESS_MASK ,
0 commit comments