⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vfs_nbench.c

📁 samba最新软件
💻 C
📖 第 1 页 / 共 2 页
字号:
			ZERO_STRUCT(wr->writex.out);		}		nbench_log(req, "WriteX %s %d %d %d %s\n", 			   nbench_ntvfs_handle_string(req, wr->writex.in.file.ntvfs),			   (int)wr->writex.in.offset,			   wr->writex.in.count,			   wr->writex.out.nwritten,			   get_nt_error_c_code(req->async_states->status));		break;	case RAW_WRITE_WRITE:		if (!NT_STATUS_IS_OK(req->async_states->status)) {			ZERO_STRUCT(wr->write.out);		}		nbench_log(req, "Write %s %d %d %d %s\n", 			   nbench_ntvfs_handle_string(req, wr->write.in.file.ntvfs),			   wr->write.in.offset,			   wr->write.in.count,			   wr->write.out.nwritten,			   get_nt_error_c_code(req->async_states->status));		break;	default:		nbench_log(req, "Write-%d - NOT HANDLED\n",			   wr->generic.level);		break;	}	PASS_THRU_REP_POST(req);}static NTSTATUS nbench_write(struct ntvfs_module_context *ntvfs,			     struct ntvfs_request *req, union smb_write *wr){	NTSTATUS status;	PASS_THRU_REQ(ntvfs, req, write, wr, (ntvfs, req, wr));	return status;}/*  seek in a file*/static void nbench_seek_send(struct ntvfs_request *req){	nbench_log(req, "Seek - NOT HANDLED\n");	PASS_THRU_REP_POST(req);}static NTSTATUS nbench_seek(struct ntvfs_module_context *ntvfs,			    struct ntvfs_request *req,			    union smb_seek *io){	NTSTATUS status;	PASS_THRU_REQ(ntvfs, req, seek, io, (ntvfs, req, io));	return status;}/*  flush a file*/static void nbench_flush_send(struct ntvfs_request *req){	union smb_flush *io = req->async_states->private_data;	switch (io->generic.level) {	case RAW_FLUSH_FLUSH:		nbench_log(req, "Flush %s %s\n",			   nbench_ntvfs_handle_string(req, io->flush.in.file.ntvfs),			   get_nt_error_c_code(req->async_states->status));		break;	case RAW_FLUSH_ALL:		nbench_log(req, "Flush %d %s\n",			   0xFFFF,			   get_nt_error_c_code(req->async_states->status));		break;	default:		nbench_log(req, "Flush-%d - NOT HANDLED\n",			   io->generic.level);		break;	}	PASS_THRU_REP_POST(req);}static NTSTATUS nbench_flush(struct ntvfs_module_context *ntvfs,			     struct ntvfs_request *req,			     union smb_flush *io){	NTSTATUS status;	PASS_THRU_REQ(ntvfs, req, flush, io, (ntvfs, req, io));	return status;}/*  close a file*/static void nbench_close_send(struct ntvfs_request *req){	union smb_close *io = req->async_states->private_data;	switch (io->generic.level) {	case RAW_CLOSE_CLOSE:		nbench_log(req, "Close %s %s\n",			   nbench_ntvfs_handle_string(req, io->close.in.file.ntvfs),			   get_nt_error_c_code(req->async_states->status));		break;	default:		nbench_log(req, "Close-%d - NOT HANDLED\n",			   io->generic.level);		break;	}			PASS_THRU_REP_POST(req);}static NTSTATUS nbench_close(struct ntvfs_module_context *ntvfs,			     struct ntvfs_request *req, union smb_close *io){	NTSTATUS status;	PASS_THRU_REQ(ntvfs, req, close, io, (ntvfs, req, io));	return status;}/*  exit - closing files*/static void nbench_exit_send(struct ntvfs_request *req){	nbench_log(req, "Exit - NOT HANDLED\n");	PASS_THRU_REP_POST(req);}static NTSTATUS nbench_exit(struct ntvfs_module_context *ntvfs,			    struct ntvfs_request *req){	NTSTATUS status;	PASS_THRU_REQ(ntvfs, req, exit, NULL, (ntvfs, req));	return status;}/*  logoff - closing files*/static void nbench_logoff_send(struct ntvfs_request *req){	nbench_log(req, "Logoff - NOT HANDLED\n");	PASS_THRU_REP_POST(req);}static NTSTATUS nbench_logoff(struct ntvfs_module_context *ntvfs,			      struct ntvfs_request *req){	NTSTATUS status;	PASS_THRU_REQ(ntvfs, req, logoff, NULL, (ntvfs, req));	return status;}/*  async_setup - send fn*/static void nbench_async_setup_send(struct ntvfs_request *req){	PASS_THRU_REP_POST(req);}/*  async setup*/static NTSTATUS nbench_async_setup(struct ntvfs_module_context *ntvfs,				   struct ntvfs_request *req,				   void *private){	NTSTATUS status;	PASS_THRU_REQ(ntvfs, req, async_setup, NULL, (ntvfs, req, private));	return status;}static void nbench_cancel_send(struct ntvfs_request *req){	PASS_THRU_REP_POST(req);}/*  cancel an existing async request*/static NTSTATUS nbench_cancel(struct ntvfs_module_context *ntvfs,			      struct ntvfs_request *req){	NTSTATUS status;	PASS_THRU_REQ(ntvfs, req, cancel, NULL, (ntvfs, req));	return status;}/*  lock a byte range*/static void nbench_lock_send(struct ntvfs_request *req){	union smb_lock *lck = req->async_states->private_data;	if (lck->generic.level == RAW_LOCK_LOCKX &&	    lck->lockx.in.lock_cnt == 1 &&	    lck->lockx.in.ulock_cnt == 0) {		nbench_log(req, "LockX %s %d %d %s\n", 			   nbench_ntvfs_handle_string(req, lck->lockx.in.file.ntvfs),			   (int)lck->lockx.in.locks[0].offset,			   (int)lck->lockx.in.locks[0].count,			   get_nt_error_c_code(req->async_states->status));	} else if (lck->generic.level == RAW_LOCK_LOCKX &&		   lck->lockx.in.ulock_cnt == 1) {		nbench_log(req, "UnlockX %s %d %d %s\n", 			   nbench_ntvfs_handle_string(req, lck->lockx.in.file.ntvfs),			   (int)lck->lockx.in.locks[0].offset,			   (int)lck->lockx.in.locks[0].count,			   get_nt_error_c_code(req->async_states->status));	} else {		nbench_log(req, "Lock-%d - NOT HANDLED\n", lck->generic.level);	}	PASS_THRU_REP_POST(req);}static NTSTATUS nbench_lock(struct ntvfs_module_context *ntvfs,			    struct ntvfs_request *req, union smb_lock *lck){	NTSTATUS status;	PASS_THRU_REQ(ntvfs, req, lock, lck, (ntvfs, req, lck));	return status;}/*  set info on a open file*/static void nbench_setfileinfo_send(struct ntvfs_request *req){	union smb_setfileinfo *info = req->async_states->private_data;	nbench_log(req, "SET_FILE_INFORMATION %s %d %s\n", 		   nbench_ntvfs_handle_string(req, info->generic.in.file.ntvfs),		   info->generic.level,		   get_nt_error_c_code(req->async_states->status));	PASS_THRU_REP_POST(req);}static NTSTATUS nbench_setfileinfo(struct ntvfs_module_context *ntvfs,				   struct ntvfs_request *req, 				   union smb_setfileinfo *info){	NTSTATUS status;	PASS_THRU_REQ(ntvfs, req, setfileinfo, info, (ntvfs, req, info));	return status;}/*  return filesystem space info*/static void nbench_fsinfo_send(struct ntvfs_request *req){	union smb_fsinfo *fs = req->async_states->private_data;	nbench_log(req, "QUERY_FS_INFORMATION %d %s\n", 		   fs->generic.level, 		   get_nt_error_c_code(req->async_states->status));	PASS_THRU_REP_POST(req);}static NTSTATUS nbench_fsinfo(struct ntvfs_module_context *ntvfs,			      struct ntvfs_request *req, union smb_fsinfo *fs){	NTSTATUS status;	PASS_THRU_REQ(ntvfs, req, fsinfo, fs, (ntvfs, req, fs));	return status;}/*  return print queue info*/static void nbench_lpq_send(struct ntvfs_request *req){	union smb_lpq *lpq = req->async_states->private_data;	nbench_log(req, "Lpq-%d - NOT HANDLED\n", lpq->generic.level);	PASS_THRU_REP_POST(req);}static NTSTATUS nbench_lpq(struct ntvfs_module_context *ntvfs,			   struct ntvfs_request *req, union smb_lpq *lpq){	NTSTATUS status;	PASS_THRU_REQ(ntvfs, req, lpq, lpq, (ntvfs, req, lpq));	return status;}/*    list files in a directory matching a wildcard pattern*/static void nbench_search_first_send(struct ntvfs_request *req){	union smb_search_first *io = req->async_states->private_data;		switch (io->generic.level) {	case RAW_SEARCH_TRANS2:		if (NT_STATUS_IS_ERR(req->async_states->status)) {			ZERO_STRUCT(io->t2ffirst.out);		}		nbench_log(req, "FIND_FIRST \"%s\" %d %d %d %s\n", 			   io->t2ffirst.in.pattern,			   io->t2ffirst.data_level,			   io->t2ffirst.in.max_count,			   io->t2ffirst.out.count,			   get_nt_error_c_code(req->async_states->status));		break;			default:		nbench_log(req, "Search-%d - NOT HANDLED\n", io->generic.level);		break;	}	PASS_THRU_REP_POST(req);}static NTSTATUS nbench_search_first(struct ntvfs_module_context *ntvfs,				    struct ntvfs_request *req, union smb_search_first *io, 				    void *search_private, 				    bool (*callback)(void *, const union smb_search_data *)){	NTSTATUS status;	PASS_THRU_REQ(ntvfs, req, search_first, io, (ntvfs, req, io, search_private, callback));	return status;}/* continue a search */static void nbench_search_next_send(struct ntvfs_request *req){	union smb_search_next *io = req->async_states->private_data;	nbench_log(req, "Searchnext-%d - NOT HANDLED\n", io->generic.level);	PASS_THRU_REP_POST(req);}static NTSTATUS nbench_search_next(struct ntvfs_module_context *ntvfs,				   struct ntvfs_request *req, union smb_search_next *io, 				   void *search_private, 				   bool (*callback)(void *, const union smb_search_data *)){	NTSTATUS status;	PASS_THRU_REQ(ntvfs, req, search_next, io, (ntvfs, req, io, search_private, callback));	return status;}/* close a search */static void nbench_search_close_send(struct ntvfs_request *req){	union smb_search_close *io = req->async_states->private_data;	nbench_log(req, "Searchclose-%d - NOT HANDLED\n", io->generic.level);	PASS_THRU_REP_POST(req);}static NTSTATUS nbench_search_close(struct ntvfs_module_context *ntvfs,				    struct ntvfs_request *req, union smb_search_close *io){	NTSTATUS status;	PASS_THRU_REQ(ntvfs, req, search_close, io, (ntvfs, req, io));	return status;}/* SMBtrans - not used on file shares */static void nbench_trans_send(struct ntvfs_request *req){	nbench_log(req, "Trans - NOT HANDLED\n");	PASS_THRU_REP_POST(req);}static NTSTATUS nbench_trans(struct ntvfs_module_context *ntvfs,			     struct ntvfs_request *req, struct smb_trans2 *trans2){	NTSTATUS status;	PASS_THRU_REQ(ntvfs, req, trans, trans2, (ntvfs, req, trans2));	return status;}/*  initialise the nbench backend, registering ourselves with the ntvfs subsystem */NTSTATUS ntvfs_nbench_init(void){	NTSTATUS ret;	struct ntvfs_ops ops;	NTVFS_CURRENT_CRITICAL_SIZES(vers);	ZERO_STRUCT(ops);	/* fill in the name and type */	ops.name = "nbench";	ops.type = NTVFS_DISK;		/* fill in all the operations */	ops.connect = nbench_connect;	ops.disconnect = nbench_disconnect;	ops.unlink = nbench_unlink;	ops.chkpath = nbench_chkpath;	ops.qpathinfo = nbench_qpathinfo;	ops.setpathinfo = nbench_setpathinfo;	ops.open = nbench_open;	ops.mkdir = nbench_mkdir;	ops.rmdir = nbench_rmdir;	ops.rename = nbench_rename;	ops.copy = nbench_copy;	ops.ioctl = nbench_ioctl;	ops.read = nbench_read;	ops.write = nbench_write;	ops.seek = nbench_seek;	ops.flush = nbench_flush;		ops.close = nbench_close;	ops.exit = nbench_exit;	ops.lock = nbench_lock;	ops.setfileinfo = nbench_setfileinfo;	ops.qfileinfo = nbench_qfileinfo;	ops.fsinfo = nbench_fsinfo;	ops.lpq = nbench_lpq;	ops.search_first = nbench_search_first;	ops.search_next = nbench_search_next;	ops.search_close = nbench_search_close;	ops.trans = nbench_trans;	ops.logoff = nbench_logoff;	ops.async_setup = nbench_async_setup;	ops.cancel = nbench_cancel;	/* we don't register a trans2 handler as we want to be able to	   log individual trans2 requests */	ops.trans2 = NULL;	/* register ourselves with the NTVFS subsystem. */	ret = ntvfs_register(&ops, &vers);	if (!NT_STATUS_IS_OK(ret)) {		DEBUG(0,("Failed to register nbench backend!\n"));	}		return ret;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -