コード例 #1
0
ファイル: usbacc.c プロジェクト: Um6ra1/ofwReverse
// OK
int DriverStart(int size, void *args)
{
	void	*lpData;
	SceUID hFPL = sceKernelCreateFpl("SceUsbAcc", 1, 256, 368, 1, NULL);	// 368 = 2*184=2*sizeof(UsbData)
	g_hFPL = hFPL;
	if (hFPL< 0)
	{
		return (-1);
	}
	if (sceKernelTryAllocateFpl(hFPL, &lpData) < 0)
	{
		sceKernelDeleteFpl(g_hFPL);
		return (-1);
	}

	g_lpData = lpData;
	
	struct UsbData	*lpUsbData = (struct UsbData	*)((int)lpData + 64);
	
	g_driver.devp_hi = lpUsbData->devdesc;	// UsbData[0]
	g_driver.confp_hi = &lpUsbData->config;
	lpData = &lpUsbData->confdesc;
	lpUsbData = sub_00000670(SPEED_HIGH, lpUsbData->devdesc, &lpUsbData->config, &lpUsbData->confdesc);
	
	g_driver.devp = lpUsbData->devdesc;	// UsbData[1]
	g_driver.confp = &lpUsbData->config;
	lpData = &lpUsbData->confdesc;
	lpData = sub_00000670(SPEED_FULL, lpUsbData->devdesc, &lpUsbData->config, &lpUsbData->confdesc);

	g_info = 0;
	g_bAttached = 0;

	int i;
	for (i = 0; i < 2; i++)
	{
		g_usbEndps[i].unk3 = 0;
	}

	g_usbDevReq.endp = g_usbEndps;
	g_usbDevReq.data = g_lpData;
	g_usbDevReq.size = 64;
	g_usbDevReq.unkc	= 1;
	g_usbDevReq.func = UsbDevReqComplete;
	g_usbDevReq.recvsize = 0;
	g_usbDevReq.retcode = 0;
	g_usbDevReq.unk1c = 0;
	g_usbDevReq.arg = 0;
	sceUsbBus_driver_90B82F55();
	g_bStarted = 1;
	return (0);
}
コード例 #2
0
ファイル: fpl.c プロジェクト: hebeDEUS/NOVOS-LIBS-03-08-2015
void *fpl_try_alloc(int fpl)
{
    int result;
    void *addr = (void*)-1;

    result = sceKernelTryAllocateFpl(fpl, &addr);
    printf("sceKernelTryAllocateFpl result=%08x addr=%p\n", result, addr);
    printMem();

    if (result != 0)
        addr = 0;

    return addr;
}