मैं अपनी प्रक्रिया में एक थर्ड-पार्टी डीएलएल को एक फ़ाइल पढ़ने से पढ़ने की कोशिश कर रहा हूं, और मैंने इसे पाया है ... अच्छा, असंभव।विंडोज़ की CreateFile (<कोई साझा एक्सेस>) क्यों झूठ बोल रही है?
कोई फर्क नहीं पड़ता कि मैं क्या करता हूं, इससे कोई फर्क नहीं पड़ता कि मैं क्या शेयर झंडे निर्दिष्ट करता हूं, उनकी कॉल हमेशा सफल होने लगती है!
यहाँ प्रक्रिया मॉनिटर से स्क्रीनशॉट है - पहली CreateFile
कॉल मेरा है, और बाकी उनकी हैं:
यह कैसे भी संभव है? क्यों है "साझा मोड: कोई नहीं" मुझसे झूठ बोल रहा है, और मैं इसे कैसे रोक सकता हूं?
#include <stdio.h>
#include <Windows.h>
int main()
{
LPCTSTR file = TEXT("C:\\Test1234.xml");
HANDLE hFile1 =
CreateFile(file, FILE_READ_ATTRIBUTES, 0, NULL, OPEN_ALWAYS, 0, NULL);
HANDLE hFile2 =
CreateFile(file, FILE_READ_DATA, 0, NULL, OPEN_ALWAYS, 0, NULL);
DWORD n;
BYTE buf[1];
printf("%d\n", ReadFile(hFile2, buf, sizeof(buf), &n, NULL));
CloseHandle(hFile1);
CloseHandle(hFile2);
DeleteFile(file);
}
यह भी उल्लेखनीय है कि मुझे नहीं पता कि वे फ़ाइल की I/O प्राथमिकता को शुरुआत में "बहुत कम" पर कैसे सेट करते हैं। क्या प्रत्येक फ़ाइल में "सामान्य" प्राथमिकता नहीं है जब तक कि यह परिवर्तित न हो जाए? – Mehrdad
कृपया अपना कोड दिखाएं जो फ़ाइल खोलता है। –
@RemyLebeau: अद्यतन देखें। – Mehrdad