123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- package winapi
- //sys NtCreateFile(handle *uintptr, accessMask uint32, oa *ObjectAttributes, iosb *IOStatusBlock, allocationSize *uint64, fileAttributes uint32, shareAccess uint32, createDisposition uint32, createOptions uint32, eaBuffer *byte, eaLength uint32) (status uint32) = ntdll.NtCreateFile
- //sys NtSetInformationFile(handle uintptr, iosb *IOStatusBlock, information uintptr, length uint32, class uint32) (status uint32) = ntdll.NtSetInformationFile
- //sys NtOpenDirectoryObject(handle *uintptr, accessMask uint32, oa *ObjectAttributes) (status uint32) = ntdll.NtOpenDirectoryObject
- //sys NtQueryDirectoryObject(handle uintptr, buffer *byte, length uint32, singleEntry bool, restartScan bool, context *uint32, returnLength *uint32)(status uint32) = ntdll.NtQueryDirectoryObject
- const (
- FileLinkInformationClass = 11
- FileDispositionInformationExClass = 64
- FILE_READ_ATTRIBUTES = 0x0080
- FILE_WRITE_ATTRIBUTES = 0x0100
- DELETE = 0x10000
- FILE_OPEN = 1
- FILE_CREATE = 2
- FILE_LIST_DIRECTORY = 0x00000001
- FILE_DIRECTORY_FILE = 0x00000001
- FILE_SYNCHRONOUS_IO_NONALERT = 0x00000020
- FILE_OPEN_FOR_BACKUP_INTENT = 0x00004000
- FILE_OPEN_REPARSE_POINT = 0x00200000
- FILE_DISPOSITION_DELETE = 0x00000001
- OBJ_DONT_REPARSE = 0x1000
- STATUS_MORE_ENTRIES = 0x105
- STATUS_NO_MORE_ENTRIES = 0x8000001a
- )
- // Select entries from FILE_INFO_BY_HANDLE_CLASS.
- //
- // C declaration:
- // typedef enum _FILE_INFO_BY_HANDLE_CLASS {
- // FileBasicInfo,
- // FileStandardInfo,
- // FileNameInfo,
- // FileRenameInfo,
- // FileDispositionInfo,
- // FileAllocationInfo,
- // FileEndOfFileInfo,
- // FileStreamInfo,
- // FileCompressionInfo,
- // FileAttributeTagInfo,
- // FileIdBothDirectoryInfo,
- // FileIdBothDirectoryRestartInfo,
- // FileIoPriorityHintInfo,
- // FileRemoteProtocolInfo,
- // FileFullDirectoryInfo,
- // FileFullDirectoryRestartInfo,
- // FileStorageInfo,
- // FileAlignmentInfo,
- // FileIdInfo,
- // FileIdExtdDirectoryInfo,
- // FileIdExtdDirectoryRestartInfo,
- // FileDispositionInfoEx,
- // FileRenameInfoEx,
- // FileCaseSensitiveInfo,
- // FileNormalizedNameInfo,
- // MaximumFileInfoByHandleClass
- // } FILE_INFO_BY_HANDLE_CLASS, *PFILE_INFO_BY_HANDLE_CLASS;
- //
- // Documentation: https://docs.microsoft.com/en-us/windows/win32/api/minwinbase/ne-minwinbase-file_info_by_handle_class
- const (
- FileIdInfo = 18
- )
- type FileDispositionInformationEx struct {
- Flags uintptr
- }
- type IOStatusBlock struct {
- Status, Information uintptr
- }
- type ObjectAttributes struct {
- Length uintptr
- RootDirectory uintptr
- ObjectName *UnicodeString
- Attributes uintptr
- SecurityDescriptor uintptr
- SecurityQoS uintptr
- }
- type ObjectDirectoryInformation struct {
- Name UnicodeString
- TypeName UnicodeString
- }
- type FileLinkInformation struct {
- ReplaceIfExists bool
- RootDirectory uintptr
- FileNameLength uint32
- FileName [1]uint16
- }
- // C declaration:
- // typedef struct _FILE_ID_INFO {
- // ULONGLONG VolumeSerialNumber;
- // FILE_ID_128 FileId;
- // } FILE_ID_INFO, *PFILE_ID_INFO;
- //
- // Documentation: https://docs.microsoft.com/en-us/windows/win32/api/winbase/ns-winbase-file_id_info
- type FILE_ID_INFO struct {
- VolumeSerialNumber uint64
- FileID [16]byte
- }
|