00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "apr_private.h"
00018 #include "apr_thread_proc.h"
00019 #include "apr_file_io.h"
00020
00021 #ifndef THREAD_PROC_H
00022 #define THREAD_PROC_H
00023
00024 #define SHELL_PATH "cmd.exe"
00025
00026 struct apr_thread_t {
00027 apr_pool_t *pool;
00028 HANDLE td;
00029 apr_int32_t cancel;
00030 apr_int32_t cancel_how;
00031 void *data;
00032 apr_thread_start_t func;
00033 apr_status_t exitval;
00034 };
00035
00036 struct apr_threadattr_t {
00037 apr_pool_t *pool;
00038 apr_int32_t detach;
00039 apr_size_t stacksize;
00040 };
00041
00042 struct apr_threadkey_t {
00043 apr_pool_t *pool;
00044 DWORD key;
00045 };
00046
00047 struct apr_procattr_t {
00048 apr_pool_t *pool;
00049 apr_file_t *parent_in;
00050 apr_file_t *child_in;
00051 apr_file_t *parent_out;
00052 apr_file_t *child_out;
00053 apr_file_t *parent_err;
00054 apr_file_t *child_err;
00055 char *currdir;
00056 apr_int32_t cmdtype;
00057 apr_int32_t detached;
00058 apr_child_errfn_t *errfn;
00059 apr_int32_t errchk;
00060 #ifndef _WIN32_WCE
00061 HANDLE user_token;
00062 LPSECURITY_ATTRIBUTES sa;
00063 LPVOID sd;
00064 #endif
00065 };
00066
00067 struct apr_thread_once_t {
00068 long value;
00069 };
00070
00071 #endif
00072