filesystem.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package winapi
  2. //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
  3. //sys NtSetInformationFile(handle uintptr, iosb *IOStatusBlock, information uintptr, length uint32, class uint32) (status uint32) = ntdll.NtSetInformationFile
  4. //sys NtOpenDirectoryObject(handle *uintptr, accessMask uint32, oa *ObjectAttributes) (status uint32) = ntdll.NtOpenDirectoryObject
  5. //sys NtQueryDirectoryObject(handle uintptr, buffer *byte, length uint32, singleEntry bool, restartScan bool, context *uint32, returnLength *uint32)(status uint32) = ntdll.NtQueryDirectoryObject
  6. const (
  7. FileLinkInformationClass = 11
  8. FileDispositionInformationExClass = 64
  9. FILE_READ_ATTRIBUTES = 0x0080
  10. FILE_WRITE_ATTRIBUTES = 0x0100
  11. DELETE = 0x10000
  12. FILE_OPEN = 1
  13. FILE_CREATE = 2
  14. FILE_LIST_DIRECTORY = 0x00000001
  15. FILE_DIRECTORY_FILE = 0x00000001
  16. FILE_SYNCHRONOUS_IO_NONALERT = 0x00000020
  17. FILE_OPEN_FOR_BACKUP_INTENT = 0x00004000
  18. FILE_OPEN_REPARSE_POINT = 0x00200000
  19. FILE_DISPOSITION_DELETE = 0x00000001
  20. OBJ_DONT_REPARSE = 0x1000
  21. STATUS_MORE_ENTRIES = 0x105
  22. STATUS_NO_MORE_ENTRIES = 0x8000001a
  23. )
  24. type FileDispositionInformationEx struct {
  25. Flags uintptr
  26. }
  27. type IOStatusBlock struct {
  28. Status, Information uintptr
  29. }
  30. type ObjectAttributes struct {
  31. Length uintptr
  32. RootDirectory uintptr
  33. ObjectName uintptr
  34. Attributes uintptr
  35. SecurityDescriptor uintptr
  36. SecurityQoS uintptr
  37. }
  38. type ObjectDirectoryInformation struct {
  39. Name UnicodeString
  40. TypeName UnicodeString
  41. }
  42. type FileLinkInformation struct {
  43. ReplaceIfExists bool
  44. RootDirectory uintptr
  45. FileNameLength uint32
  46. FileName [1]uint16
  47. }