| /* |
| * Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved. |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| * |
| * This code is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License version 2 only, as |
| * published by the Free Software Foundation. Oracle designates this |
| * particular file as subject to the "Classpath" exception as provided |
| * by Oracle in the LICENSE file that accompanied this code. |
| * |
| * This code is distributed in the hope that it will be useful, but WITHOUT |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| * version 2 for more details (a copy is included in the LICENSE file that |
| * accompanied this code). |
| * |
| * You should have received a copy of the GNU General Public License version |
| * 2 along with this work; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| * |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| * or visit www.oracle.com if you need additional information or have any |
| * questions. |
| */ |
| |
| #ifndef _NTIFS_MIN_ |
| #define _NTIFS_MIN_ |
| |
| /* |
| * Copy necessary structures and definitions out of the Windows DDK |
| * to enable calling NtQueryDirectoryFile() |
| */ |
| |
| typedef LONG NTSTATUS; |
| #define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0) |
| |
| typedef struct _UNICODE_STRING { |
| USHORT Length; |
| USHORT MaximumLength; |
| PWCH Buffer; |
| } UNICODE_STRING; |
| typedef UNICODE_STRING *PUNICODE_STRING; |
| typedef const UNICODE_STRING *PCUNICODE_STRING; |
| |
| typedef enum _FILE_INFORMATION_CLASS { |
| FileDirectoryInformation = 1, |
| FileFullDirectoryInformation, |
| FileBothDirectoryInformation, |
| FileBasicInformation, |
| FileStandardInformation, |
| FileInternalInformation, |
| FileEaInformation, |
| FileAccessInformation, |
| FileNameInformation, |
| FileRenameInformation, |
| FileLinkInformation, |
| FileNamesInformation, |
| FileDispositionInformation, |
| FilePositionInformation, |
| FileFullEaInformation, |
| FileModeInformation, |
| FileAlignmentInformation, |
| FileAllInformation, |
| FileAllocationInformation, |
| FileEndOfFileInformation, |
| FileAlternateNameInformation, |
| FileStreamInformation, |
| FilePipeInformation, |
| FilePipeLocalInformation, |
| FilePipeRemoteInformation, |
| FileMailslotQueryInformation, |
| FileMailslotSetInformation, |
| FileCompressionInformation, |
| FileObjectIdInformation, |
| FileCompletionInformation, |
| FileMoveClusterInformation, |
| FileQuotaInformation, |
| FileReparsePointInformation, |
| FileNetworkOpenInformation, |
| FileAttributeTagInformation, |
| FileTrackingInformation, |
| FileIdBothDirectoryInformation, |
| FileIdFullDirectoryInformation, |
| FileValidDataLengthInformation, |
| FileShortNameInformation, |
| FileIoCompletionNotificationInformation, |
| FileIoStatusBlockRangeInformation, |
| FileIoPriorityHintInformation, |
| FileSfioReserveInformation, |
| FileSfioVolumeInformation, |
| FileHardLinkInformation, |
| FileProcessIdsUsingFileInformation, |
| FileNormalizedNameInformation, |
| FileNetworkPhysicalNameInformation, |
| FileIdGlobalTxDirectoryInformation, |
| FileIsRemoteDeviceInformation, |
| FileAttributeCacheInformation, |
| FileNumaNodeInformation, |
| FileStandardLinkInformation, |
| FileRemoteProtocolInformation, |
| FileMaximumInformation |
| } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS; |
| |
| typedef struct _FILE_ID_FULL_DIR_INFORMATION { |
| ULONG NextEntryOffset; |
| ULONG FileIndex; |
| LARGE_INTEGER CreationTime; |
| LARGE_INTEGER LastAccessTime; |
| LARGE_INTEGER LastWriteTime; |
| LARGE_INTEGER ChangeTime; |
| LARGE_INTEGER EndOfFile; |
| LARGE_INTEGER AllocationSize; |
| ULONG FileAttributes; |
| ULONG FileNameLength; |
| ULONG EaSize; |
| LARGE_INTEGER FileId; |
| WCHAR FileName[1]; |
| } FILE_ID_FULL_DIR_INFORMATION, *PFILE_ID_FULL_DIR_INFORMATION; |
| |
| typedef struct _IO_STATUS_BLOCK { |
| union { |
| NTSTATUS Status; |
| PVOID Pointer; |
| } u; |
| ULONG_PTR Information; |
| } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK; |
| |
| typedef VOID |
| (NTAPI *PIO_APC_ROUTINE)( |
| IN PVOID ApcContext, |
| IN PIO_STATUS_BLOCK IoStatusBlock, |
| IN ULONG Reserved); |
| |
| NTSYSCALLAPI |
| NTSTATUS |
| NTAPI |
| NtQueryDirectoryFile( |
| _In_ HANDLE FileHandle, |
| _In_opt_ HANDLE Event, |
| _In_opt_ PIO_APC_ROUTINE ApcRoutine, |
| _In_opt_ PVOID ApcContext, |
| _Out_ PIO_STATUS_BLOCK IoStatusBlock, |
| _Out_ PVOID FileInformation, |
| _In_ ULONG Length, |
| _In_ FILE_INFORMATION_CLASS FileInformationClass, |
| _In_ BOOLEAN ReturnSingleEntry, |
| _In_opt_ PUNICODE_STRING FileName, |
| _In_ BOOLEAN RestartScan |
| ); |
| |
| ULONG |
| NTAPI |
| RtlNtStatusToDosError( |
| NTSTATUS Status |
| ); |
| |
| #define STATUS_NO_MORE_FILES ((NTSTATUS)0x80000006L) |
| #define STATUS_NOT_A_DIRECTORY ((NTSTATUS)0xC0000103L) |
| |
| #endif // _NTIFS_MIN_ |