Files
2019-02-16 00:16:52 +01:00

64 lines
1.7 KiB
C

/*
Copyright (C) Andrzej Hajda 2006
Contact: andrzej.hajda@wp.pl
License: GNU General Public License version 2
*/
/* service.c */
#define SVC_INTERACTIVE 1
#define SVC_IGNORE_INTERACTIVE 2
#define SVC_INTERACTIVE_MASK 3
#define SVC_FORCE_UPLOAD 4
NTSTATUS svc_install(const char *hostname,
struct cli_credentials *credentials, int flags);
NTSTATUS svc_uninstall(const char *hostname,
struct cli_credentials *credentials);
/* async.c */
enum { ASYNC_OPEN, ASYNC_OPEN_RECV, ASYNC_READ, ASYNC_READ_RECV,
ASYNC_WRITE, ASYNC_WRITE_RECV, ASYNC_CLOSE, ASYNC_CLOSE_RECV };
typedef void (*async_cb_open) (void *ctx);
typedef void (*async_cb_read) (void *ctx, const char *data, int len);
typedef void (*async_cb_close) (void *ctx);
typedef void (*async_cb_error) (void *ctx, int func, NTSTATUS status);
struct list_item {
struct list_item *next;
int size;
char data[0];
};
struct list {
struct list_item *begin;
struct list_item *end;
};
struct async_context {
/* Public - must be initialized by client */
struct smbcli_tree *tree;
void *cb_ctx;
async_cb_open cb_open;
async_cb_read cb_read;
async_cb_close cb_close;
async_cb_error cb_error;
/* Private - internal usage, initialize to zeros */
int fd;
union smb_open *io_open;
union smb_read *io_read;
union smb_write *io_write;
union smb_close *io_close;
struct smbcli_request *rreq;
struct smbcli_request *wreq;
struct list wq;
char buffer[256];
};
int async_open(struct async_context *c, const char *fn, int open_mode);
int async_read(struct async_context *c);
int async_write(struct async_context *c, const void *buf, int len);
int async_close(struct async_context *c);
/* winexesvc_exe.c */
extern unsigned int winexesvc_exe_len;
extern unsigned char winexesvc_exe[];