diff options
author | Araq <rumpf_a@web.de> | 2015-09-28 16:42:40 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2015-09-29 19:30:45 +0200 |
commit | 4e44ded2be609aa3e36ce5bd59301d2ab0bd60bd (patch) | |
tree | 6456eafafa34a2c869695d27a44282dd32e6fda8 | |
parent | c852143f3a45ed42f03d4d70225c92079bd475ed (diff) | |
download | Nim-4e44ded2be609aa3e36ce5bd59301d2ab0bd60bd.tar.gz |
winlean additions; preparing for osproc patch to use named pipes
-rw-r--r-- | lib/windows/winlean.nim | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/windows/winlean.nim b/lib/windows/winlean.nim index 84dac6d79..e6a119e15 100644 --- a/lib/windows/winlean.nim +++ b/lib/windows/winlean.nim @@ -108,6 +108,13 @@ const CREATE_UNICODE_ENVIRONMENT* = 1024'i32 + PIPE_ACCESS_DUPLEX* = 0x00000003'i32 + PIPE_ACCESS_INBOUND* = 1'i32 + PIPE_ACCESS_OUTBOUND* = 2'i32 + PIPE_NOWAIT* = 0x00000001'i32 + SYNCHRONIZE* = 0x00100000'i32 + FILE_FLAG_WRITE_THROUGH* = 0x80000000'i32 + proc closeHandle*(hObject: Handle): WINBOOL {.stdcall, dynlib: "kernel32", importc: "CloseHandle".} @@ -125,6 +132,19 @@ proc createPipe*(hReadPipe, hWritePipe: var Handle, nSize: int32): WINBOOL{. stdcall, dynlib: "kernel32", importc: "CreatePipe".} +proc createNamedPipe*(lpName: WideCString, + dwOpenMode, dwPipeMode, nMaxInstances, nOutBufferSize, + nInBufferSize, nDefaultTimeOut: int32, + lpSecurityAttributes: ptr SECURITY_ATTRIBUTES): Handle {. + stdcall, dynlib: "kernel32", importc: "CreateNamedPipeW".} + +proc peekNamedPipe*(hNamedPipe: Handle, lpBuffer: pointer=nil, + nBufferSize: int32 = 0, + lpBytesRead: ptr int32 = nil, + lpTotalBytesAvail: ptr int32 = nil, + lpBytesLeftThisMessage: ptr int32 = nil): bool {. + stdcall, dynlib: "kernel32", importc: "PeekNamedPipe".} + when useWinUnicode: proc createProcessW*(lpApplicationName, lpCommandLine: WideCString, lpProcessAttributes: ptr SECURITY_ATTRIBUTES, @@ -615,12 +635,24 @@ const FILE_FLAG_BACKUP_SEMANTICS* = 33554432'i32 FILE_FLAG_OPEN_REPARSE_POINT* = 0x00200000'i32 + DUPLICATE_SAME_ACCESS* = 2 + FILE_READ_DATA* = 0x00000001 # file & pipe + FILE_WRITE_DATA* = 0x00000002 # file & pipe # Error Constants const ERROR_ACCESS_DENIED* = 5 ERROR_HANDLE_EOF* = 38 +proc duplicateHandle*(hSourceProcessHandle: HANDLE, hSourceHandle: HANDLE, + hTargetProcessHandle: HANDLE, + lpTargetHandle: ptr HANDLE, + dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, + dwOptions: DWORD): WINBOOL{.stdcall, dynlib: "kernel32", + importc: "DuplicateHandle".} +proc getCurrentProcess*(): HANDLE{.stdcall, dynlib: "kernel32", + importc: "GetCurrentProcess".} + when useWinUnicode: proc createFileW*(lpFileName: WideCString, dwDesiredAccess, dwShareMode: DWORD, lpSecurityAttributes: pointer, |