public void Disconnect() { TreeDisconnectRequest request = new TreeDisconnectRequest(); SendCommand(request); SMB2Command response = WaitForCommand(request.MessageID); response.IsSuccessElseThrow(); }
public void CloseFile(NtHandle handle) { CloseRequest request = new CloseRequest { FileId = (FileID)handle }; SendCommand(request); SMB2Command?response = WaitForCommand(request.MessageID); if (response.Header.Status != NTStatus.STATUS_FILE_CLOSED) { response?.IsSuccessElseThrow(); } }
public void SetFileInformation(NtHandle handle, FileInformation information) { SetInfoRequest request = new SetInfoRequest { InfoType = InfoType.File, FileInformationClass = information.FileInformationClass, FileId = (FileID)handle }; request.SetFileInformation(information); SendCommand(request); SMB2Command response = WaitForCommand(request.MessageID); response.IsSuccessElseThrow(); }
public void GetSecurityInformation(out SecurityDescriptor?result, NtHandle handle, SecurityInformation securityInformation) { result = null; QueryInfoRequest request = new QueryInfoRequest { InfoType = InfoType.Security, SecurityInformation = securityInformation, OutputBufferLength = 4096, FileId = (FileID)handle }; SendCommand(request); SMB2Command response = WaitForCommand(request.MessageID); response.IsSuccessElseThrow(); if (response is QueryInfoResponse queryInfoResponse) { result = queryInfoResponse.GetSecurityInformation(); } }