mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 05:27:21 +00:00
This tag of hcsshim brings in a couple welcome features/improvements. One being exposing a way to query for hns endpoint statistics (Packets received/sent etc.). This tag also contains some optimizations for querying whether a certain HCN feature is supported, which is a common workflow in kube-proxy on Windows. The first result from querying HCN is now cached so further calls can skip the hcn query as well as the version range parsing that was performed. This also gets rid of some redundant logs that used to hit everytime the version range parsing occurred. The Go-winio dep bump, and all of the ctrd deps are transitive only. Nothing new is needed/intended to be used. Signed-off-by: Daniel Canter <dcanter@microsoft.com>
111 lines
3.3 KiB
Go
111 lines
3.3 KiB
Go
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
|
|
}
|