SDMMD_AFCOperationRef SDMMD_AFCOperationCreateGetDeviceInfo() { SDMMD_AFCOperationRef op = calloc(1, sizeof(struct sdmmd_AFCOperation)); op->packet = calloc(1, sizeof(struct sdmmd_AFCPacket)); SDMMD_AFCHeaderInit(&(op->packet->header), SDMMD_AFC_Packet_GetDeviceInfo, sizeof(struct SDMMD_AFCPacketHeader), 0x0, 0x0); op->timeout = dispatch_time(DISPATCH_TIME_NOW, 0); return op; }
// rdi, rsi SDMMD_AFCOperationRef SDMMD_AFCFileDescriptorCreateCloseOperation() { // _AFCFileDescriptorCreateCloseOperation SDMMD_AFCOperationRef op = calloc(1, sizeof(struct sdmmd_AFCOperation)); op->packet = calloc(1, sizeof(struct sdmmd_AFCPacket)); uint32_t data_length = 8; op->packet->data = calloc(data_length, sizeof(char)); SDMMD_AFCHeaderInit(&(op->packet->header), SDMMD_AFC_Packet_FileRefClose, data_length+sizeof(struct SDMMD_AFCPacketHeader), 0x0, 0x0); return op; }
// rdi, rsi, rdx SDMMD_AFCOperationRef SDMMD_AFCFileDescriptorCreateWriteOperation(void* thing, CFDataRef data, void* thing2) { // _AFCFileDescriptorCreateWriteOperation SDMMD_AFCOperationRef op = calloc(1, sizeof(struct sdmmd_AFCOperation)); op->packet = calloc(1, sizeof(struct sdmmd_AFCPacket)); uint32_t data_length = 8; uint32_t body_length = (uint32_t)CFDataGetLength(data); op->packet->data = calloc(body_length, sizeof(char)); memcpy(op->packet->data, CFDataGetBytePtr(data), body_length); SDMMD_AFCHeaderInit(&(op->packet->header), SDMMD_AFC_Packet_FileRefWrite, data_length+sizeof(struct SDMMD_AFCPacketHeader), body_length, 0x0); return op; }
SDMMD_AFCOperationRef SDMMD_AFCOperationCreateGetFileInfo(CFStringRef path) { SDMMD_AFCOperationRef op = calloc(1, sizeof(struct sdmmd_AFCOperation)); op->packet = calloc(1, sizeof(struct sdmmd_AFCPacket)); char *cpath = SDMCFStringGetString(path); op->packet->data = calloc(1, strlen(cpath)+1); memcpy(op->packet->data, cpath, strlen(cpath)); SDMMD_AFCHeaderInit(&op->packet->header, 0xa, strlen(cpath)+0x29, 0x0, 0x0); free(cpath); return op; }
SDMMD_AFCOperationRef SDMMD_AFCOperationCreateReadDirectory(CFStringRef path) { // _AFCOperationCreateReadDirectory SDMMD_AFCOperationRef op = calloc(1, sizeof(struct sdmmd_AFCOperation)); op->packet = calloc(1, sizeof(struct sdmmd_AFCPacket)); char *cpath = SDMCFStringGetString(path); uint32_t data_length = (uint32_t)strlen(cpath)+1; op->packet->data = calloc(data_length, sizeof(char)); memcpy(op->packet->data, cpath, data_length); SDMMD_AFCHeaderInit(&(op->packet->header), SDMMD_AFC_Packet_ReadDirectory, data_length+sizeof(struct SDMMD_AFCPacketHeader), 0x0, 0x0); free(cpath); return op; }
SDMMD_AFCOperationRef SDMMD_AFCOperationCreateOpenFile(CFStringRef path, uint16_t mode, void* *fileRef) { SDMMD_AFCOperationRef op = calloc(1, sizeof(struct sdmmd_AFCOperation)); op->packet = calloc(1, sizeof(struct sdmmd_AFCPacket)); char *cpath = SDMCFStringGetString(path); op->packet->data = calloc(1, strlen(cpath)+2); op->packet->data = (void*)mode; memcpy(&op->packet->data[2], cpath, strlen(cpath)); SDMMD_AFCHeaderInit(&op->packet->header, 0xd, strlen(cpath)+0x31, 0x0, 0x0); free(cpath); return op; }
SDMMD_AFCOperationRef SDMMD_AFCOperationCreateFileRefOpen(CFStringRef path, uint16_t mode, void* *fileRef) { SDMMD_AFCOperationRef op = calloc(1, sizeof(struct sdmmd_AFCOperation)); op->packet = calloc(1, sizeof(struct sdmmd_AFCPacket)); char *cpath = SDMCFStringGetString(path); uint32_t data_length = (uint32_t)strlen(cpath)+1+8; op->packet->data = calloc(data_length, sizeof(char)); memcpy(op->packet->data, &mode, sizeof(mode)); memcpy(&(op->packet->data[sizeof(mode)]), cpath, strlen(cpath)); SDMMD_AFCHeaderInit(&(op->packet->header), SDMMD_AFC_Packet_FileRefOpen, data_length+sizeof(struct SDMMD_AFCPacketHeader), 0x0, 0x0); free(cpath); return op; }
// rdi, rsi, rdx SDMMD_AFCOperationRef SDMMD_AFCOperationCreateSetConnectionOptions() { // _AFCOperationCreateSetConnectionOptions SDMMD_AFCOperationRef op = calloc(1, sizeof(struct sdmmd_AFCOperation)); op->packet = calloc(1, sizeof(struct sdmmd_AFCPacket)); SDMMD_AFCHeaderInit(&(op->packet->header), SDMMD_AFC_Packet_SetConnectionOptions, sizeof(struct SDMMD_AFCPacketHeader), 0x0, 0x0); return op; }
// rdi, rsi, rdx SDMMD_AFCOperationRef SDMMD_AFCFileDescriptorCreateSetFileSizeOperation() { // _AFCFileDescriptorCreateSetSizeOperation SDMMD_AFCOperationRef op = calloc(1, sizeof(struct sdmmd_AFCOperation)); op->packet = calloc(1, sizeof(struct sdmmd_AFCPacket)); SDMMD_AFCHeaderInit(&(op->packet->header), SDMMD_AFC_Packet_FileRefSetFileSize, sizeof(struct SDMMD_AFCPacketHeader), 0x0, 0x0); return op; }
SDMMD_AFCOperationRef SDMMD_AFCFileDescriptorCreateTellResultOperation() { SDMMD_AFCOperationRef op = calloc(1, sizeof(struct sdmmd_AFCOperation)); op->packet = calloc(1, sizeof(struct sdmmd_AFCPacket)); SDMMD_AFCHeaderInit(&(op->packet->header), SDMMD_AFC_Packet_FileRefTellResult, sizeof(struct SDMMD_AFCPacketHeader), 0x0, 0x0); return op; }
SDMMD_AFCOperationRef SDMMD_AFCOperationCreateWriteFileAtomic() { SDMMD_AFCOperationRef op = calloc(1, sizeof(struct sdmmd_AFCOperation)); op->packet = calloc(1, sizeof(struct sdmmd_AFCPacket)); SDMMD_AFCHeaderInit(&(op->packet->header), SDMMD_AFC_Packet_WriteFileAtomic, sizeof(struct sdmmd_AFCPacket), 0x0, 0x0); return op; }
SDMMD_AFCOperationRef SDMMD_AFCOperationCreateReadFile(CFStringRef path) { SDMMD_AFCOperationRef op = calloc(1, sizeof(struct sdmmd_AFCOperation)); op->packet = calloc(1, sizeof(struct sdmmd_AFCPacket)); SDMMD_AFCHeaderInit(&(op->packet->header), SDMMD_AFC_Packet_ReadFile, sizeof(struct sdmmd_AFCPacket), 0x0, 0x0); return op; }
SDMMD_AFCOperationRef SDMMD_AFCFileDescriptorCreateReadOperation(void* fileRef ) { SDMMD_AFCOperationRef op = calloc(1, sizeof(struct sdmmd_AFCOperation)); op->packet = calloc(1, sizeof(struct sdmmd_AFCPacket)); SDMMD_AFCHeaderInit(&op->packet->header, 0xf, 0x38, 0x0, 0x0); return op; }
SDMMD_AFCOperationRef SDMMD_AFCOperationCreateGetDeviceInfo() { SDMMD_AFCOperationRef op = calloc(1, sizeof(struct sdmmd_AFCOperation)); op->packet = calloc(1, sizeof(struct sdmmd_AFCPacket)); SDMMD_AFCHeaderInit(&op->packet->header, 0xb, 0x28, 0x0, 0x0); return op; }