Changeset 34097 in vbox
- Timestamp:
- Nov 16, 2010 10:39:51 AM (14 years ago)
- svn:sync-xref-src-repo-rev:
- 67796
- Location:
- trunk/src/VBox/Additions/WINNT/VBoxTray
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxIPC.cpp
r34085 r34097 23 23 #include <iprt/assert.h> 24 24 #include <iprt/err.h> 25 #include <iprt/mem.h> 25 26 #include <VBoxGuestInternal.h> 26 27 … … 32 33 } VBOXIPCCONTEXT, *PVBOXIPCCONTEXT; 33 34 34 #define VBOXTRAY_PIPE_BUFSIZE 51235 36 35 static VBOXIPCCONTEXT gCtx = {0}; 37 36 … … 39 38 { 40 39 int rc = VINF_SUCCESS; 41 while (RT_SUCCESS(rc))40 do 42 41 { 43 42 DWORD dwRead; 44 43 if (!ReadFile(pCtx->hPipe, pMessage, cbMessage, &dwRead, 0)) 44 { 45 45 rc = RTErrConvertFromWin32(GetLastError()); 46 if (rc == VERR_MORE_DATA) 47 { 48 rc = VINF_SUCCESS; 46 } 47 else 48 { 49 if (rc == VERR_MORE_DATA) 50 rc = VINF_SUCCESS; 49 51 pMessage += dwRead; 50 } 51 } 52 cbMessage -= dwRead; 53 } 54 } 55 while (cbMessage && RT_SUCCESS(rc)); 52 56 return rc; 53 57 } … … 69 73 { 70 74 VBOXTRAYIPCHEADER hdr; 71 hdr.u Msg = VBOXTRAYIPCMSGTYPE_QUIT;72 hdr.u Ver = 0;75 hdr.ulMsg = VBOXTRAYIPCMSGTYPE_QUIT; 76 hdr.ulVer = 0; 73 77 return VBoxIPCWriteMessage(pCtx, (BYTE*)&hdr, sizeof(hdr)); 74 78 } … … 91 95 hlpShowBalloonTip(gInstance, gToolWindow, ID_TRAYICON, 92 96 msg.szBody, msg.szTitle, 93 msg.u ShowMS, msg.uType);97 msg.ulShowMS, msg.ulType); 94 98 } 95 99 return rc; … … 103 107 gCtx.pEnv = pEnv; 104 108 109 int rc = VINF_SUCCESS; 105 110 SECURITY_ATTRIBUTES sa; 106 sa.lpSecurityDescriptor = (PSECURITY_DESCRIPTOR)malloc(SECURITY_DESCRIPTOR_MIN_LENGTH); 107 if (!InitializeSecurityDescriptor(sa.lpSecurityDescriptor, SECURITY_DESCRIPTOR_REVISION)) 108 { 109 DWORD er = ::GetLastError(); 110 } 111 if (!SetSecurityDescriptorDacl(sa.lpSecurityDescriptor, TRUE, (PACL)0, FALSE)) 112 { 113 DWORD er = ::GetLastError(); 114 } 115 sa.nLength = sizeof sa; 116 sa.bInheritHandle = TRUE; 117 118 int rc = VINF_SUCCESS; 119 gCtx.hPipe = ::CreateNamedPipe((LPSTR)VBOXTRAY_PIPE_IPC, 120 PIPE_ACCESS_DUPLEX, 121 PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, 122 PIPE_UNLIMITED_INSTANCES, 123 VBOXTRAY_PIPE_BUFSIZE, // output buffer size 124 VBOXTRAY_PIPE_BUFSIZE, // input buffer size 125 NMPWAIT_USE_DEFAULT_WAIT, 126 &sa); 127 if (gCtx.hPipe == INVALID_HANDLE_VALUE) 128 { 129 DWORD dwError = ::GetLastError(); 130 } 111 sa.lpSecurityDescriptor = (PSECURITY_DESCRIPTOR)RTMemAlloc(SECURITY_DESCRIPTOR_MIN_LENGTH); 112 if (!sa.lpSecurityDescriptor) 113 rc = VERR_NO_MEMORY; 131 114 else 132 115 { 133 *pfStartThread = true; 134 *ppInstance = &gCtx; 116 if (!InitializeSecurityDescriptor(sa.lpSecurityDescriptor, SECURITY_DESCRIPTOR_REVISION)) 117 rc = RTErrConvertFromWin32(GetLastError()); 118 else 119 { 120 if (!SetSecurityDescriptorDacl(sa.lpSecurityDescriptor, TRUE, (PACL)0, FALSE)) 121 rc = RTErrConvertFromWin32(GetLastError()); 122 else 123 { 124 sa.nLength = sizeof(sa); 125 sa.bInheritHandle = TRUE; 126 } 127 } 128 129 if (RT_SUCCESS(rc)) 130 { 131 gCtx.hPipe = CreateNamedPipe((LPSTR)VBOXTRAY_PIPE_IPC, 132 PIPE_ACCESS_DUPLEX, 133 PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, 134 PIPE_UNLIMITED_INSTANCES, 135 VBOXTRAY_PIPE_IPC_BUFSIZE, /* Output buffer size. */ 136 VBOXTRAY_PIPE_IPC_BUFSIZE, /* Input buffer size. */ 137 NMPWAIT_USE_DEFAULT_WAIT, 138 &sa); 139 if (gCtx.hPipe == INVALID_HANDLE_VALUE) 140 rc = RTErrConvertFromWin32(GetLastError()); 141 else 142 { 143 *pfStartThread = true; 144 *ppInstance = &gCtx; 145 } 146 } 147 RTMemFree(sa.lpSecurityDescriptor); 135 148 } 136 149 return rc; … … 191 204 if (SUCCEEDED(dwErr)) 192 205 { 193 switch (hdr.u Msg)206 switch (hdr.ulMsg) 194 207 { 195 208 case VBOXTRAYIPCMSGTYPE_SHOWBALLOONMSG: 196 rc = VBoxIPCMsgShowBalloonMsg(pCtx, hdr.u Ver);209 rc = VBoxIPCMsgShowBalloonMsg(pCtx, hdr.ulVer); 197 210 break; 198 211 -
trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxTrayMsg.h
r34085 r34097 19 19 #define ___VBOXTRAY_MSG_H 20 20 21 #define VBOXTRAY_PIPE_IPC "\\\\.\\pipe\\VBoxTrayIPC" 21 #define VBOXTRAY_PIPE_IPC "\\\\.\\pipe\\VBoxTrayIPC" 22 #define VBOXTRAY_PIPE_IPC_BUFSIZE 64 * 1024 22 23 23 24 enum VBOXTRAYIPCMSGTYPE … … 33 34 { 34 35 /** Message type. */ 35 U INT uMsg;36 ULONG ulMsg; 36 37 /** Version of message type. */ 37 U INT uVer;38 ULONG ulVer; 38 39 } VBOXTRAYIPCHEADER, *PVBOXTRAYIPCHEADER; 39 40 … … 45 46 TCHAR szTitle[64]; 46 47 /** Message type. */ 47 U INT uType;48 ULONG ulType; 48 49 /** Flags; not used yet. */ 49 U INT uFlags;50 ULONG ulFlags; 50 51 /** Time to show the message (in msec). */ 51 U INT uShowMS;52 ULONG ulShowMS; 52 53 } VBOXTRAYIPCMSG_SHOWBALLOONMSG, *PVBOXTRAYIPCMSG_SHOWBALLOONMSG; 53 54
Note:
See TracChangeset
for help on using the changeset viewer.