亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? osal_win32.cpp

?? PS2游戲硬盤(pán)直灌(HDL)的Windows下VC的源代碼
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
  if (DeviceIoControl (handle, IOCTL_DISK_GET_DRIVE_GEOMETRY,		       NULL, 0, &geo, sizeof (DISK_GEOMETRY), &len, NULL)&&len>0)    {      *size_in_bytes = geo.BytesPerSector;      return (OSAL_OK);    }  else
  {
	  DWORD nFree=0;
	  DWORD dwCylinders;
	  const char *name;
	  name=osal_get_device_name(handle);
	  if(name&&GetDiskFreeSpace(name,&geo.SectorsPerTrack,&geo.BytesPerSector,&nFree,&dwCylinders))
	  {
		  *size_in_bytes=geo.BytesPerSector;
		  return (OSAL_OK);
	  }
  }
  SetLastError(ERROR_EMPTY);  return (OSAL_ERR);}/**************************************************************/intosal_get_volume_sect_size (const char *volume_root,			   u_int32_t *size_in_bytes){  char volume [10]; /* copy drive letter and a slash - "C:\" */  char *p = volume, *end = volume + sizeof (volume) - 2;  while (*volume_root != '\\' && p < end)    *p++ = *volume_root++;  if (p < end)    {      DWORD sectors_per_clust, bytes_per_sect, free_clusters, total_clusters;      *p++ = '\\';      *p = '\0';      if (GetDiskFreeSpace (volume, &sectors_per_clust, &bytes_per_sect,			    &free_clusters, &total_clusters))	{	  *size_in_bytes = bytes_per_sect;	  return (OSAL_OK);	}      else	return (OSAL_ERR);    }  else    { /* if called with no volume name ask for full path */      char full_path [MAX_PATH], *dummy;      DWORD result = GetFullPathName (volume_root, MAX_PATH, full_path, &dummy);      if (result <= MAX_PATH)	return (osal_get_volume_sect_size (full_path, size_in_bytes));      else	return (RET_BAD_FORMAT);    }}/**************************************************************/intosal_get_file_size (osal_handle_t handle,		    u_int64_t *size_in_bytes){  LARGE_INTEGER size;  if (GetFileSizeEx (handle, &size))    {      *size_in_bytes = size.QuadPart;      return (OSAL_OK);    }  else    return (OSAL_ERR);}/**************************************************************/intosal_get_file_size_ex (const char *path,		       u_int64_t *size_in_bytes){  osal_handle_t in;  int result = osal_open (path, &in, 1);  if (result == OSAL_OK)    {      result = osal_get_file_size (in, size_in_bytes);      osal_close (in);    }  return (result);}/**************************************************************/intosal_seek (osal_handle_t handle,	   u_int64_t abs_pos){  LARGE_INTEGER offs;  offs.QuadPart = abs_pos;  return (SetFilePointerEx (handle, offs, NULL, FILE_BEGIN) ? OSAL_OK : OSAL_ERR);}/**************************************************************/int /* OSAL_OK, OSAL_ERR */osal_read (osal_handle_t handle,	   void *out,	   u_int32_t bytes,	   u_int32_t *stored){  DWORD len;  if (ReadFile (handle, out, bytes, &len, NULL))    {      *stored = len;      return (OSAL_OK);    }  else    return (OSAL_ERR);}/**************************************************************/int /* OSAL_OK, OSAL_ERR */osal_write (osal_handle_t handle,	    const void *in,	    u_int32_t bytes,	    u_int32_t *stored){  DWORD len;  if (WriteFile (handle, in, bytes, &len, NULL))    {      *stored = len;      return (OSAL_OK);    }  else    return (OSAL_ERR);}/**************************************************************/int /* OSAL_OK, OSAL_ERR */osal_close (osal_handle_t handle){
	if(handle!=INVALID_HANDLE_VALUE)
		UnregisterDevice(handle);  return (CloseHandle (handle) ? OSAL_OK : OSAL_ERR);}/**************************************************************/void*osal_alloc (u_int32_t bytes){  return (LocalAlloc (LMEM_FIXED, bytes));}/**************************************************************/voidosal_free (void *ptr){  if (ptr != NULL)    LocalFree (ptr);}/**************************************************************/intosal_query_hard_drives (osal_dlist_t **hard_drives){  u_int32_t i;  int result;  *hard_drives = NULL;  result = osal_dlist_alloc (hard_drives);  for (i=0; result == RET_OK && i<16; ++i)    {      char device_name [20];      HANDLE device;      sprintf (device_name, "\\\\.\\PhysicalDrive%u", (unsigned int) i);      if (osal_open (device_name, &device, TRUE) == OSAL_OK)	{ /* device exists */	  u_int64_t size_in_bytes;	  sprintf (device_name, "hdd%u:", (unsigned int) i);	  if (osal_get_estimated_device_size (device, &size_in_bytes) == OSAL_OK)	    result = osal_dlist_add (*hard_drives, device_name, size_in_bytes,				     is_apa_partition (device), ERROR_SUCCESS);	  else	    result = osal_dlist_add (*hard_drives, device_name, (u_int64_t) 0, 0, GetLastError ());	  	  osal_close (device);	}      else	break; /* first open error is the end of list */    }  if (result != RET_OK &&      *hard_drives != NULL)    osal_dlist_free (*hard_drives);  return (result);}/**************************************************************/intosal_query_optical_drives (osal_dlist_t **optical_drives){  u_int32_t i;  int result;  *optical_drives = NULL;  result = osal_dlist_alloc (optical_drives);  for (i=0; result == RET_OK && i<16; ++i)    {      char device_name [20];      HANDLE device;      sprintf (device_name, "\\\\.\\CdRom%u", (unsigned int) i);      if (osal_open (device_name, &device, TRUE) == OSAL_OK)	{ /* device exists */	  u_int64_t size_in_bytes;	  sprintf (device_name, "cd%u:", (unsigned int) i);	  if (osal_get_estimated_device_size (device, &size_in_bytes) == OSAL_OK)	    result = osal_dlist_add (*optical_drives, device_name,				     size_in_bytes, 0, ERROR_SUCCESS);	  else	    result = osal_dlist_add (*optical_drives, device_name,				     (u_int64_t) 0, 0, GetLastError());	  	  osal_close(device);	}      else	break; /* first open error is the end of list */    }  if (result != RET_OK &&      *optical_drives != NULL)    osal_dlist_free (*optical_drives);  return (result);}/**************************************************************/intosal_query_devices (osal_dlist_t **hard_drives,		    osal_dlist_t **optical_drives){  int result = osal_query_hard_drives (hard_drives);  if (result == RET_OK)    result = osal_query_optical_drives (optical_drives);  return (result);}/**************************************************************/static intosal_dlist_alloc (osal_dlist_t **dlist){  *dlist = (osal_dlist_t *)osal_alloc (sizeof (osal_dlist_t));  if (*dlist != NULL)    {      (*dlist)->allocated = (*dlist)->used = 0;      (*dlist)->device = NULL;      return (RET_OK);    }  else    return (RET_NO_MEM);}/**************************************************************/static intosal_dlist_add (osal_dlist_t *dlist,		const char *name,		u_int64_t capacity,		int is_ps2,		unsigned long status){  osal_dev_t *dev;  if (dlist->allocated == dlist->used)    { /* allocate memory if necessary */      osal_dev_t *tmp = (osal_dev_t *)osal_alloc ((dlist->allocated + 16) * sizeof (osal_dev_t));      if (tmp != NULL)	{	  if (dlist->device != NULL)	    {	      memcpy (tmp, dlist->device, dlist->used * sizeof (osal_dev_t));	      osal_free (dlist->device);	    }	  dlist->device = tmp;	  dlist->allocated += 16;	}      else	return (RET_NO_MEM);    }  /* add the new entry */  dev = dlist->device + dlist->used;  strncpy (dev->name, name, DEV_MAX_NAME_LEN);  dev->name [DEV_MAX_NAME_LEN - 1] = '\0';  dev->capacity = capacity;  dev->is_ps2 = is_ps2;  dev->status = status;  ++dlist->used;  return (RET_OK);}/**************************************************************/voidosal_dlist_free (osal_dlist_t *dlist){  if (dlist != NULL)    {      if (dlist->device != NULL)	osal_free (dlist->device);      osal_free (dlist);    }}/**************************************************************/int /* RET_OK, RET_BAD_FORMAT, RET_BAD_DEVICE */osal_map_device_name (const char *input,		      char output [MAX_PATH]){  if (memcmp (input, "hdd", 3) == 0)    {      char *endp;      long index = strtol (input + 3, &endp, 10);      if (endp == input + 3)	return (RET_BAD_FORMAT); /* bad format: no number after hdd */      if (endp [0] == ':' &&	  endp [1] == '\0')	{	  sprintf (output, "\\\\.\\PhysicalDrive%ld", index);	  return (RET_OK);	}      else	return (RET_BAD_FORMAT);    }  else if (memcmp (input, "cd", 2) == 0)    {      char *endp;      long index = strtol (input + 2, &endp, 10);      if (endp == input + 2)	return (RET_BAD_FORMAT); /* bad format: no number after hdd */      if (endp [0] == ':' &&	  endp [1] == '\0')	{	  sprintf (output, "\\\\.\\CdRom%ld", index);	  return (RET_OK);	}      else	return (RET_BAD_FORMAT);    }  else    return (RET_BAD_DEVICE);}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久蜜臀中文字幕| 亚洲午夜影视影院在线观看| 天天亚洲美女在线视频| 欧美日韩一区 二区 三区 久久精品| 国产精品视频看| 91在线一区二区| 一区二区免费视频| 日韩亚洲欧美成人一区| 亚洲成人动漫av| 中文字幕av一区二区三区免费看| 97国产一区二区| 亚洲午夜久久久久久久久电影网| 欧美日韩国产区一| 国产在线精品免费| 人人超碰91尤物精品国产| 精品99999| 丰满少妇在线播放bd日韩电影| 亚洲老妇xxxxxx| 7777精品伊人久久久大香线蕉| 久久只精品国产| 欧美久久久久久久久| 国产精品综合在线视频| 亚洲欧美日韩成人高清在线一区| 欧美一区二区视频在线观看2022 | 欧美一级在线免费| 亚洲综合一区二区| 欧美三级三级三级| 久久se精品一区二区| 国产精品色哟哟| 欧美高清激情brazzers| 国产精品女同一区二区三区| 欧美zozozo| av在线免费不卡| 蜜臀a∨国产成人精品| 国产女同性恋一区二区| 欧美丰满少妇xxxxx高潮对白| 在线观看亚洲a| 韩国毛片一区二区三区| 一区二区成人在线| 中文字幕中文在线不卡住| 日韩欧美亚洲国产另类| 97精品国产97久久久久久久久久久久| 日韩成人免费电影| 国产精品女主播在线观看| 日韩精品影音先锋| 91成人在线观看喷潮| 国产成人av电影在线播放| 国产欧美在线观看一区| 亚洲国产精华液网站w| 欧美v国产在线一区二区三区| 在线中文字幕一区| 9人人澡人人爽人人精品| 亚洲黄色免费电影| 亚洲妇熟xx妇色黄| 亚洲男人的天堂在线aⅴ视频| 欧美成人a∨高清免费观看| 色狠狠av一区二区三区| 丁香五精品蜜臀久久久久99网站| 亚洲成国产人片在线观看| 午夜免费欧美电影| 亚洲综合免费观看高清完整版在线| 精品日韩在线一区| 久久久久88色偷偷免费| **性色生活片久久毛片| 亚洲大片在线观看| 久久97超碰国产精品超碰| 岛国精品在线播放| 成人深夜福利app| 欧美日韩一区二区在线视频| 在线不卡免费欧美| 欧美精品一区二区三区在线 | 成人免费小视频| 亚洲成av人影院| 国产一区二区三区免费播放| 国产精品综合av一区二区国产馆| 国产精品18久久久久久久久| 国产高清不卡二三区| 国产麻豆成人传媒免费观看| 另类人妖一区二区av| 99在线精品一区二区三区| 成人精品免费网站| 国产乱码精品一品二品| 九九精品一区二区| 免费高清视频精品| 国产精品996| 国产成人亚洲综合a∨婷婷| 国产精品影视天天线| 国产精品一区二区你懂的| 成人性色生活片| 成人免费高清在线观看| 色中色一区二区| 欧美日韩日日骚| 欧美日韩另类一区| 欧美探花视频资源| 午夜伊人狠狠久久| 五月天精品一区二区三区| 国产黄色精品网站| 成人av电影在线观看| 欧美tk丨vk视频| 国产亚洲污的网站| 日韩午夜电影在线观看| 综合激情网...| 婷婷丁香激情综合| 99久久久精品| 色综合久久天天| 7777精品伊人久久久大香线蕉超级流畅 | 在线不卡免费欧美| 亚洲精品在线免费播放| 中文字幕一区av| 日韩精品一二三| 韩日av一区二区| 在线观看日韩高清av| 日韩欧美一二区| 日韩免费电影一区| 欧美精品自拍偷拍动漫精品| 色94色欧美sute亚洲13| 欧美日韩国产免费一区二区| 欧美成人r级一区二区三区| 中文字幕亚洲视频| 午夜精品久久一牛影视| 秋霞影院一区二区| 一本色道综合亚洲| 日韩欧美一二区| 最新成人av在线| 另类欧美日韩国产在线| 91久久久免费一区二区| 欧美mv和日韩mv国产网站| 亚洲精品美国一| 九九热在线视频观看这里只有精品 | 欧美日本乱大交xxxxx| 久久精品男人的天堂| 亚洲精品国产无天堂网2021| 国产精品一区二区久激情瑜伽 | 国产日产欧美一区二区视频| 亚洲图片激情小说| 国内精品在线播放| 91片在线免费观看| 欧美一区二区三区视频免费| 日韩二区三区四区| 91麻豆自制传媒国产之光| 久久综合久色欧美综合狠狠| 亚洲成a人片综合在线| 成人国产精品视频| 精品少妇一区二区三区免费观看 | 视频在线在亚洲| 99精品视频在线观看免费| 精品理论电影在线| 亚洲h在线观看| 99精品欧美一区二区三区小说| 中文字幕一区在线观看视频| 午夜视频一区在线观看| 粉嫩嫩av羞羞动漫久久久| 26uuu亚洲综合色欧美| 日韩精品一级中文字幕精品视频免费观看 | 国产大陆精品国产| 在线电影一区二区三区| 亚洲美女淫视频| 97久久精品人人爽人人爽蜜臀| 久久免费偷拍视频| 综合激情成人伊人| 国产成人亚洲综合色影视| 26uuu色噜噜精品一区二区| 日本成人在线视频网站| 欧美三级在线视频| 国产欧美日本一区视频| 麻豆中文一区二区| 欧美在线不卡一区| 亚洲人吸女人奶水| 成人福利在线看| 欧美国产综合一区二区| 国产精品一区二区久久精品爱涩 | 国产精品美女久久久久久久网站| 日韩电影免费一区| 欧美一区二区免费观在线| 青青青伊人色综合久久| 久久久久久亚洲综合影院红桃| 激情五月婷婷综合| 精品盗摄一区二区三区| 国模少妇一区二区三区| 欧美一区二区黄| 亚洲品质自拍视频| 在线观看不卡一区| 亚洲一区二区精品3399| 日本乱码高清不卡字幕| 久久国产精品99精品国产| 久久久www免费人成精品| 精品影视av免费| 国产欧美综合色| av男人天堂一区| 亚洲一区二区欧美| 欧美日韩一级二级| 一区二区高清在线| 久久精品在这里| 成人精品小蝌蚪| 亚洲精品国产第一综合99久久 | 精品一区二区在线视频| 国产日韩精品一区二区三区| 97久久久精品综合88久久| 亚洲成人三级小说| 26uuu久久综合|