티스토리 뷰

Programming/C

API 함수 정리

Oth 2017. 9. 19. 12:19


파일


파일 열기 쓰기

HANDLE hFile;

 hFile = CreateFile(argv[1],                // name of the write
                       GENERIC_WRITE,          // open for writing
                       0,                      // do not share
                       NULL,                   // default security
                       CREATE_NEW,             // create new file only
                       FILE_ATTRIBUTE_NORMAL,  // normal file
                       NULL);                  // no attr. template


파일 열기 읽기


HANDLE hFile;

LARGE_INTEGER distance;

distance.QuadPart=-1

hFile = CreateFile(argv[1], // file to open GENERIC_READ, // open for reading FILE_SHARE_READ, // share for reading NULL, // default security OPEN_EXISTING, // existing file only FILE_ATTRIBUTE_NORMAL, // normal file NULL); // no attr. template


SetFilePointerEx(hFile, buffer, distance, NULL, FILE_END);

ReadFile(hFile,majic,1,&read,NULL);





레지스트리

열기

  •     ret = RegOpenKeyEx( HKEY_LOCAL_MACHINE ,                                // 키 값  
  •                         "SOFTWARE\\Cygnus Solutions\\Cygwin\\mounts v2",    // 서브 키값   
  •                         0,                                                  // 옵션 항상 0  
  •                         KEY_QUERY_VALUE,                                    // 접근 권한  
  •                         &hKey                                               // 키 핸들  
  •                       );




  • 읽기


  •         RegQueryValueEx(    hKey,                // RegOpenKeyEx에 얻어진 키 핸들  
  •                             "cygdrive prefix",                    // 키 안에 값 이름
  •                             0,                                    // 옵션 항상 0   
  •                             &data_type,                           // 얻어진 데이터 타입  
  •                             (BYTE*) data_buffer,                  // 얻어진 데이터  
  •                             (DWORD *) &data_size                  // 얻어진 데이터 크기(버퍼의 크기로 해준다. )


  • data_size 값은 0으로 초기화할 경우 데이터를 못 알아온다.

    Default 를 얻으려면 키 값이름을 NULL로 해주면 된다.


    닫기

     RegCloseKey     ( hKey );





    프로세스


    CreateProcess

    STARTUPINFO si; PROCESS_INFORMATION pi;

    ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) );


    CreateProcess(File_Path, argument, NULL ,NULL ,FALSE ,0 ,NULL ,NULL ,&si ,&pi);


    인자값을 전달하려면 두 번째 인자값에 넣는다.




    파일 경로


    %SystemRoot%

    getenv("systemroot") 를 통해서 알아온다.


    getSystemDirectory

    system32의 path를 알아온다.




    스레드


    CreateThread


    HANDLE hThread; DWORD dwThreadId = 1; DWORD dwThrdParam = 1;

    hThread=CreateThread(NULL, 0, ThreadProc, (LPVOID)dwThrdParam, 0, &dwThreadId);





    문자열


    replace


    char *replaceAll(char *s, const char *olds, const char *news) {
      char *result, *sr;
      size_t i, count = 0;
      size_t oldlen = strlen(olds); if (oldlen < 1) return s;
      size_t newlen = strlen(news);


      if (newlen != oldlen) {
        for (i = 0; s[i] != '\0';) {
          if (memcmp(&s[i], olds, oldlen) == 0) count++, i += oldlen;
          else i++;
        }
      } else i = strlen(s);


      result = (char *) malloc(i + 1 + count * (newlen - oldlen));
      if (result == NULL) return NULL;


      sr = result;
      while (*s) {
        if (memcmp(s, olds, oldlen) == 0) {
          memcpy(sr, news, newlen);
          sr += newlen;
          s  += oldlen;
        } else *sr++ = *s++;
      }
      *sr = '\0';

      return result;
    }




    strtok_s

    strtok_s(나눌 스트링,나눌 기준,나눈 이후 나머지가 들어간다)
    strtok_s(reg_buffer,"%",&left);


    wcsrchr


    wcsstr(path,'.');


    뒤와 같이 사용하면 파일의 extention을 구할 수 있다. wcsrchr 은 문자열의 뒤에서부터 검색해준다.





    메모리


    memmove


    void *memmove(void *dest, const void *src, size_t count );


    dest : 복사될 곳
    src : 복사할 메모리
    count  : 복사할 바이트 수


    네트워크


    URLDownloadToFile


    URLDownloadToFile(NULL, L"http://URL", L"exe_path", 0, NULL);




    sockaddr


    struct sockaddr_in{

    short sin_family;

    unsigned short sin_port;

    IN_ADDR sin_add;

    char sin_zero[8];

    }


    strcut sockaddr{

    ushort sa_family;

    char sa_data[14];

    }





    bind


    int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen);


    connect


    int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);


    setsockopt


    int setsockopt(int socket, int level, intoption_name,const void *option_value, socklen_toption_len);


    level :


    - SOL_SOCKET 0xffff  :


    optval :


    -SO_BROADCAST 0x20 : 브로드캐스트가 가능하게 해준다.


    accept

    sudo pip install [모듈명]






    send

    int send(int s, const void *msg, size_t len, int flags);






    'Programming > C' 카테고리의 다른 글

    struct  (0) 2017.09.08
    Dlll로부터 함수 얻어오기  (0) 2017.09.08
    rand 함수  (0) 2017.05.14
    mmap  (0) 2017.05.06
    strtoull 함수  (0) 2017.04.30
    댓글
    공지사항
    최근에 올라온 글
    최근에 달린 댓글
    Total
    Today
    Yesterday
    링크
    «   2024/05   »
    1 2 3 4
    5 6 7 8 9 10 11
    12 13 14 15 16 17 18
    19 20 21 22 23 24 25
    26 27 28 29 30 31
    글 보관함