# File lib/net/ssh/authentication/pageant.rb, line 131
131:       def send_query(query)
132:         res = nil
133:         filemap = 0
134:         ptr = nil
135:         id = DL::PtrData.malloc(DL.sizeof("L"))
136: 
137:         mapname = "PageantRequest%08x\000" % Win.getCurrentThreadId()
138:         filemap = Win.createFileMapping(Win::INVALID_HANDLE_VALUE, 
139:                                         Win::NULL,
140:                                         Win::PAGE_READWRITE, 0, 
141:                                         AGENT_MAX_MSGLEN, mapname)
142:         if filemap == 0
143:           raise Net::SSH::Exception,
144:             "Creation of file mapping failed"
145:         end
146: 
147:         ptr = Win.mapViewOfFile(filemap, Win::FILE_MAP_WRITE, 0, 0, 
148:                                 AGENT_MAX_MSGLEN)
149: 
150:         if ptr.nil? || ptr.null?
151:           raise Net::SSH::Exception, "Mapping of file failed"
152:         end
153: 
154:         ptr[0] = query
155: 
156:         cds = [AGENT_COPYDATA_ID, mapname.size + 1, mapname].
157:           pack("LLp").to_ptr
158:         succ = Win.sendMessageTimeout(@win, Win::WM_COPYDATA, Win::NULL,
159:                                       cds, Win::SMTO_NORMAL, 5000, id)
160: 
161:         if succ > 0
162:           retlen = 4 + ptr.to_s(4).unpack("N")[0]
163:           res = ptr.to_s(retlen)
164:         end        
165: 
166:         return res
167:       ensure
168:         Win.unmapViewOfFile(ptr) unless ptr.nil? || ptr.null?
169:         Win.closeHandle(filemap) if filemap != 0
170:       end