The code is a version of the Arduino camera control library modified to work with usbhost Pulling out the relevant bits, it looks like this:
#define PTP_MAX_RX_BUFFER_LEN 512
#define PTP_MAX_RX_DATA_LEN (PTP_MAX_RX_BUFFER_LEN - PTP_USB_BULK_HDR_LEN)
typedef struct
{
uint32_t len;
uint16_t con_type;
uint16_t opcode;
uint32_t transaction_id;
uint8_t data[PTP_MAX_RX_DATA_LEN];
} PTP_DATA_CONTAINER;
PTP_DATA_CONTAINER data;
ZeroMemory(sizeof(data), &data);
uint32_t nbytes = sizeof(data);
// nbytes is 512, and data is all zeros
uint32_t rcode = usb->inTransfer(devAddress, epDataIn, &nbytes, (uint8_t*)&data);
// rcode is zero
// nbytes is 512, and data is all zeros