Windows API一日一練(77)VirtualAlloc函數

上一次學習了全域記憶體的分配,在Windows裡記憶體管理是分為兩部份,全域記憶體是系統管理的記憶體,因而所有進程都可以訪問的記憶體,而每一個進程又有自己的記憶體空間,這就是虛擬記憶體空間了,而虛擬記憶體的空間比較大,當實體記憶體不足時,系統會把虛擬記憶體的資料儲存到硬碟裡,這樣只要硬碟的空間足夠大,每個進程就可以使用3G的記憶體。虛擬記憶體分配可以作為程式裡分配記憶體的主要方式,比如大量的資料緩衝區,動態分配記憶體的空間。使用VirtualAlloc函數來分配記憶體的速度要比全域記憶體要快。 

Windows API一日一練(81)FormatMessage函數

在開發軟體的過程裡,經常要做的工作就是偵錯工具,許多問題的出現,不但是邏輯的問題,還有可能是對API的不熟悉,或者某種條件下調用API會出錯的。那麼這些出錯的原因是什麼呢?通常只擷取到錯誤碼,也就是通過函數GetLastError得到。當然可以根據這個錯誤碼去尋找MSDN就可以知道出錯的原因,但有時在客戶那裡並沒有MSDN,那麼就需要把調用API函數出錯的資訊顯示出來,或者寫到LOG裡去。這時就需要調用函數FormatMessage把出錯碼詳細原因顯示出來。 函數FormatMessage聲明如

Windows API一日一練(55)FlushFileBuffers和SetFilePointer函數

在PC硬體體繫結構裡,速度最快的儲存空間是CPU裡面的寄存器,接著到二級緩衝,再到系統RAM記憶體,最後才到硬碟。由於這樣的體繫結構,就決定了作業系統對檔案的操作方式,或者說是最佳化的演算法。比如作業系統接收到寫檔案的資料時,就會先把資料儲存到RAM裡,然後在合適的時間或者合適的資料量時再寫到硬碟裡。但有時候我們希望資料一定要儲存到硬碟裡,而不是儲存在RAM裡,這時就需要使用函數FlushFileBuffers來把RAM裡的資料儲存到硬碟裡。檔案的結構是一個有序的隊列,有頭有尾,當讀寫檔案後,就

Windows API一日一練(76)GlobalAlloc函數

在Windows系統裡,有一項功能非常實用,就是剪貼簿功能,它能夠從一個程式裡與另一個程式進行資料交換的功能,也就是說兩個進程上是可以共用資料。要實現這樣的功能,Windows系統在底層上有相應的支援,就是高端地址的記憶體是系統記憶體,這樣就可以不同的進程進行共用資料了。因此,調用函數GlobalAlloc來分配系統記憶體,讓不同的進程實現共用資料,也就是剪貼簿功能,可以在一個進程內分配記憶體,在另一個進程裡訪問資料後刪除記憶體。 函數GlobalAlloc聲明如下: HGLOBALWINAPI

Windows API一日一練(13)TranslateMessage函數

TranslateMessage是用來把虛擬鍵訊息轉換為字元訊息。由於Windows對所有鍵盤編碼都是採用虛擬鍵的定義,這樣當按鍵按下時,並不得字元訊息,需要鍵盤對應轉換為字元的訊息。TranslateMessage函數用於將虛擬鍵訊息轉換為字元訊息。字元訊息被投遞到調用線程的訊息佇列中,當下一次調用GetMessage函數時被取出。當我們敲擊鍵盤上的某個字元鍵時,系統將產生WM_KEYDOWN和WM_KEYUP訊息。這兩個訊息的附加參數(wParam和lParam)包含的是虛擬按鍵碼和掃描碼等

A new OpenAL 1.1 Installer for Windows and a new OpenAL 1.1 SDK for Windows are now available

終於更新了,好好研究一下A new OpenAL 1.1 Installer for Windows and a new OpenAL 1.1 SDK for Windows are now available at developer.creative.com. This SDK combines the OpenAL SDK with the X-RAM SDK and the Creative Effects SDK to create a single download for

OpenAL® and Windows Vista™

http://www.openal.org/openal_vista.htmlIntroductionWith the launch of Windows Vista just around the corner, both gamers and game developers are asking questions about audio compatibility with OpenAL. This document is intended to address the

Windows下的宏

1,防止一個標頭檔被重複包含 #ifndef COMDEF_H #define COMDEF_H   //標頭檔內容 #endif 2,重新定義一些類型,防止由於各種平台和編譯器的不同,而產生的類型位元組數差異,方便移植。 typedef  unsigned char      boolean;     /* Boolean value type. */ typedef  unsigned long int  uint32;      /* Unsigned 32 bit value

Windows自訂訊息ID

WM_USER 到 0x7FFF 是為私人視窗類別保留的。你可以將這個範圍認為是在特定的表單類中有意義的專用訊息。想要定義其自己訊息的應用程式應該使用 WM_APP。WM_APP 是確保不會與系統(WM_CREATE 等等)或類/特定控制項訊息如 DM_GETDEFID 相衝突的Message Ranges in Windows0 - (WM_USER-1) 系統使用的保留訊息.如:WM_CREATE 和 WM_SCROLL. WM_USER - 0x7FFF

Windows API一日一練(57)CopyFile和MoveFile函數

在資訊的社會裡,共用資訊是非常重要的。比如你有一個很好的相片,要拷給朋友去分享。又或者你在寫一些比較重要的資料,要進行不定時備份時,也就需要拷貝檔案到不同的目錄裡。這樣就需要使用到函數CopyFile來拷貝檔案,它能夠把一份檔案拷貝多一份出來。我在開發一個資料擷取的軟體裡,由於這個軟體是可以不同的使用者共同使用,使用者跟我說有這樣的需求,就是不同的使用者的資料移動到不同的目錄裡,這樣方便他們管理資料,也方便他們在上千個檔案裡找到自己有用的檔案,而不會與別人的檔案混在一起,這樣就需要把採集資料完成

Windows API一日一練(85)OpenClipboard函數

多個軟體之間進行資料共用是非常重要的,難以想像編輯軟體沒有CTRL+C,CTRL+V的功能,是多麼的不方便。很多的操作,就是拷貝的動作,就是為了資料共用。剪貼簿共用是Windows裡比較重要的功能,比如很多採集資料的軟體為了方便導資料到Excel裡面,就可以使用剪貼簿的功能。還有即見即所得的介面導到Word裡面,也可以使用剪貼簿的功能。 函數OpenClipboard聲明如下: WINUSERAPIBOOLWINAPIOpenClipboard(    __in_opt HWND

Windows API一日一練(14)DispatchMessage函數

前面已經介紹從系統隊列裡擷取一條訊息,然後經過快速鍵的函數檢查,又通過字元訊息函數的轉換,最後要做的事情就是調用DispatchMessage函數,它的意思就是說要把這條訊息發送到視窗裡的訊息處理函數WindowProc。 函數DispatchMessage聲明如下:WINUSERAPILRESULTWINAPIDispatchMessageA(    __in CONST MSG *lpMsg);WINUSERAPILRESULTWINAPIDispatchMessageW(    __in

Windows API一日一練(12)TranslateAccelerator函數

當應用程式運行時,使用者按下快速鍵,這樣就產生了一個按鍵訊息,那麼Windows是怎麼樣把它轉化為快速鍵響應的訊息呢?這就需要使用TranslateAccelerator函數。TranslateAccelerator函數主要的作用就是把訊息跟快速鍵表裡定義的按鍵進行比較,如果發現有快速鍵,就會把這個按鍵訊息轉換為WM_COMMAND或者WM_SYSCOMMAND訊息給視窗的訊息處理函數發送過去。函數TranslateAccelerator聲明如下:WINUSERAPIintWINAPITrans

[轉載]Windows網路編程系列教程之四:Select模型

原文:http://www.51see.com/asp/bbs/public/bp_show.asp?t_id=200308131152297103講一下通訊端模式和通訊端I/O模型的區別。先說明一下,只針對Winsock,如果你要骨頭裡挑雞蛋把UNIX下的通訊端概念來往這裡套,那就不關我的事。通訊端模式:阻塞通訊端和非阻塞通訊端。或者叫同步通訊端和非同步通訊端。通訊端模型:描述如何對通訊端的I/O行為進行管理。Winsock提供的I/O模型一共有五種:select,WSAAsyncSelect

Rich Wickham on Windows – Live

有關cross-platform gaming,有這麼一段話:A game that’s an RTS on the PC could be an FPS on the 360, where “I’m the RTS commander, and I’m moving units around and you’re the foot soldier going out and fighting the battles. And how you do effects how I do, and

OpenAL Installer for Windows

OpenAL Installer for WindowsPosted on 4/10/2003Updated April 3, 2006 : Version 1.9.1The OpenAL Installer for Windows will install the OpenAL 1.1 library, enabling support for core OpenAL operations as well as extensions such as EAX and EFX. The

Windows下Hook API技術

 什麼叫Hook API?所謂Hook就是鉤子的意思,而API是指Windows開放給程式員的編程介面,使得在使用者層級下可以對作業系統進行控制,也就是一般的應用程 序都需要調用API來完成某些功能,Hook API的意思就是在這些應用程式調用真正的系統API前可以先被截獲,從而進行一些處理再調用真正的API來完成功能。在講Hook API之前先來看一下如何Hook訊息,例如Hook全域鍵盤訊息,從而可以知道使用者按了哪些鍵,這種Hook訊息的功能可以由以下函數來完成,該函數將

【伺服器架構】(AsyncSelect模型、Windows平台)

此次拖的時間稍長一些,因為遇到幾個難題。一個就是前面提到的死結,其他幾個問題還未解決。遇到的幾個問題和現象,大致總結如下:1。 PC機的最大TCP串連數問題。Windows平台,XP

WINDOWS作業系統中可以允許最大的線程數

預設情況下,一個線程的棧要預留1M的記憶體空間 而一個進程中可用的記憶體空間只有2G,所以理論上一個進程中最多可以開2048個線程 但是記憶體當然不可能完全拿來作線程的棧,所以實際數目要比這個值要小。 你也可以通過串連時修改預設棧大小,將其改的比較小,這樣就可以多開一些線程。 如將預設棧的大小改成512K,這樣理論上最多就可以開4096個線程。 即使實體記憶體再大,一個進程中可以起的線程總要受到2GB這個記憶體空間的限制。 比方說你的機器裝了64GB實體記憶體,但每個進程的記憶體空間還是4GB,

屏蔽控制台應用程式的視窗#pragma comment(linker, “/subsystem:windows /ENTRY:mainCRTStartup”)

眾所周知,控制台應用程式一般都會顯示一個控制台視窗(虛擬DOS視窗),但很多時候控制台程式的執行邏輯根本不需要與使用者進行互動,所以顯示這個難看的視窗純屬多餘,那麼如何將它屏蔽掉呢?下面我向大家介紹一種方法。  作業系統裝載應用程式後,做完初始化工作就轉到程式的進入點執行。程式的預設進入點實際上是由串連程式設定的,不同的連接器選擇的入口函數也不盡相同。在VC下,連接器對控制台程式設定的入口函數是 mainCRTStartup,mainCRTStartup 再調用你自己編寫的

總頁數: 1345 1 .... 260 261 262 263 264 .... 1345 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.