void CUsbDkRedirectorStrategy::IsoRWCompletion(WDFREQUEST Request, WDFIOTARGET, PWDF_REQUEST_COMPLETION_PARAMS CompletionParams, WDFCONTEXT) { CRedirectorRequest WdfRequest(Request); auto Context = WdfRequest.Context(); CPreAllocatedWdfMemoryBufferT<URB> urb(CompletionParams->Parameters.Usb.Completion->Parameters.PipeUrb.Buffer); CPreAllocatedWdfMemoryBufferT<USB_DK_ISO_TRANSFER_RESULT> IsoPacketResult(Context->LockedIsochronousResultsArray); ASSERT(urb->UrbIsochronousTransfer.NumberOfPackets == IsoPacketResult.ArraySize()); *Context->BytesTransferred = 0; for (ULONG i = 0; i < urb->UrbIsochronousTransfer.NumberOfPackets; i++) { IsoPacketResult[i].actualLength = urb->UrbIsochronousTransfer.IsoPacket[i].Length; IsoPacketResult[i].transferResult = urb->UrbIsochronousTransfer.IsoPacket[i].Status; *Context->BytesTransferred += IsoPacketResult[i].actualLength; } auto status = CompletionParams->IoStatus.Status; if (!NT_SUCCESS(status)) { TraceEvents(TRACE_LEVEL_ERROR, TRACE_REDIRECTOR, "%!FUNC! Request completion error %!STATUS!", status); } else if (!USBD_SUCCESS(urb->UrbHeader.Status)) { TraceEvents(TRACE_LEVEL_ERROR, TRACE_REDIRECTOR, "%!FUNC! USB request completion error %lu", urb->UrbHeader.Status); status = STATUS_INVALID_DEVICE_REQUEST; } WdfRequest.SetOutputDataLen(sizeof(*Context->BytesTransferred)); WdfRequest.SetStatus(status); }
int main(int argc, char** argv){ int opt; char* config; /* char buf[8]; */ /* int sfd[3]; */ int port; if(argc < 2){ perror("Argument missing"); exit(EXIT_FAILURE); } while( (opt = getopt(argc, argv, "f:p:") ) != -1){ switch(opt){ case 'p': port = atoi(optarg); break; case 'f': config = optarg; break; default: exit(EXIT_FAILURE); } } init(config, "127.0.0.1", port); join(); /* message_t msg; */ /* msg.type = 'M'; */ /* msg.content = NULL; */ char msg[] = "test"; urb((void*)msg, sizeof(msg)); return EXIT_SUCCESS; }
void MeshGeometry::createCubeFaces(FaceGeometry& topFace, FaceGeometry& frontFace, FaceGeometry& leftFace, FaceGeometry& backFace, FaceGeometry& rightFace, FaceGeometry& bottomFace, tgt::vec3 coordLlf, tgt::vec3 coordUrb, tgt::vec3 texLlf, tgt::vec3 texUrb, tgt::vec3 colorLlf, tgt::vec3 colorUrb, float alpha) { // expecting coordLlf < coordUrb if (coordLlf.x > coordUrb.x) { std::swap(coordLlf.x, coordUrb.x); std::swap(texLlf.x, texUrb.x); std::swap(colorLlf.x, colorUrb.x); } if (coordLlf.y > coordUrb.y) { std::swap(coordLlf.y, coordUrb.y); std::swap(texLlf.y, texUrb.y); std::swap(colorLlf.y, colorUrb.y); } if (coordLlf.z > coordUrb.z) { std::swap(coordLlf.z, coordUrb.z); std::swap(texLlf.z, texUrb.z); std::swap(colorLlf.z, colorUrb.z); } VertexGeometry llf(vec3(coordLlf.x, coordLlf.y, coordLlf.z), vec3(texLlf.x, texLlf.y, texLlf.z), vec4(colorLlf.x, colorLlf.y, colorLlf.z, alpha)); VertexGeometry lrf(vec3(coordUrb.x, coordLlf.y, coordLlf.z), vec3(texUrb.x, texLlf.y, texLlf.z), vec4(colorUrb.x, colorLlf.y, colorLlf.z, alpha)); VertexGeometry lrb(vec3(coordUrb.x, coordLlf.y, coordUrb.z), vec3(texUrb.x, texLlf.y, texUrb.z), vec4(colorUrb.x, colorLlf.y, colorUrb.z, alpha)); VertexGeometry llb(vec3(coordLlf.x, coordLlf.y, coordUrb.z), vec3(texLlf.x, texLlf.y, texUrb.z), vec4(colorLlf.x, colorLlf.y, colorUrb.z, alpha)); VertexGeometry ulb(vec3(coordLlf.x, coordUrb.y, coordUrb.z), vec3(texLlf.x, texUrb.y, texUrb.z), vec4(colorLlf.x, colorUrb.y, colorUrb.z, alpha)); VertexGeometry ulf(vec3(coordLlf.x, coordUrb.y, coordLlf.z), vec3(texLlf.x, texUrb.y, texLlf.z), vec4(colorLlf.x, colorUrb.y, colorLlf.z, alpha)); VertexGeometry urf(vec3(coordUrb.x, coordUrb.y, coordLlf.z), vec3(texUrb.x, texUrb.y, texLlf.z), vec4(colorUrb.x, colorUrb.y, colorLlf.z, alpha)); VertexGeometry urb(vec3(coordUrb.x, coordUrb.y, coordUrb.z), vec3(texUrb.x, texUrb.y, texUrb.z), vec4(colorUrb.x, colorUrb.y, colorUrb.z, alpha)); topFace.addVertex(urb); topFace.addVertex(urf); topFace.addVertex(ulf); topFace.addVertex(ulb); frontFace.addVertex(llf); frontFace.addVertex(ulf); frontFace.addVertex(urf); frontFace.addVertex(lrf); leftFace.addVertex(llf); leftFace.addVertex(llb); leftFace.addVertex(ulb); leftFace.addVertex(ulf); backFace.addVertex(urb); backFace.addVertex(ulb); backFace.addVertex(llb); backFace.addVertex(lrb); rightFace.addVertex(urb); rightFace.addVertex(lrb); rightFace.addVertex(lrf); rightFace.addVertex(urf); bottomFace.addVertex(llf); bottomFace.addVertex(lrf); bottomFace.addVertex(lrb); bottomFace.addVertex(llb); }