📄 glocal.cpp
字号:
#include "stdafx.h"
#include "sivfax.h"
#include "global.h"
#include "resource.h"
HANDLE g_hIocpRing;
ULONG_PTR g_dwComKeyRing;
PDEVICE_INFO *g_pDeviceInfo;
HANDLE g_hInstance;
HLINEAPP g_LineAppHandle;
HANDLE g_HeapHandle;
DWORD g_dwLines;
HANDLE g_hCallbackIocp;
HANDLE g_hWorkerThread;
BOOL PostJobStatus(
HANDLE CompletionPort,
ULONG_PTR CompletionKey,
DWORD dwPageCount,
DWORD StatusId,
DWORD ErrorCode)
{
PFAX_DEV_STATUS pFaxDevStatus;
pFaxDevStatus = (PFAX_DEV_STATUS)( MemAllocMacro(sizeof(FAX_DEV_STATUS)));
if (pFaxDevStatus != NULL) {
pFaxDevStatus->SizeOfStruct = sizeof(FAX_DEV_STATUS);
pFaxDevStatus->StatusId = StatusId;
pFaxDevStatus->StringId = 0;
pFaxDevStatus->PageCount = dwPageCount;
pFaxDevStatus->CSI = NULL;
pFaxDevStatus->CallerId = NULL;
pFaxDevStatus->RoutingInfo = NULL;
pFaxDevStatus->ErrorCode = ErrorCode;
return PostQueuedCompletionStatus(CompletionPort, sizeof(FAX_DEV_STATUS), CompletionKey, (LPOVERLAPPED) pFaxDevStatus);
}
else
return FALSE;
}
BOOL PostJobStatus2(PDEVICE_INFO pd,DWORD ErrorCode)
{
PJOB_INFO pJobInfo;
DWORD dwSize;
pJobInfo = pd->pJobInfo;
DWORD upStringOffset;
// EnterCriticalSection(&pd->cs);
dwSize = sizeof(FAX_DEV_STATUS);
if (pJobInfo->CSI != NULL)
dwSize += (lstrlen(pJobInfo->CSI) + 1)* sizeof(WCHAR);
if (pJobInfo->CallerId != NULL)
dwSize += (lstrlen(pJobInfo->CallerId) + 1)* sizeof(WCHAR);
if (pJobInfo->RoutingInfo != NULL)
dwSize += (lstrlen(pJobInfo->RoutingInfo) + 1)* sizeof(WCHAR);
PFAX_DEV_STATUS pFaxDevStatus;
pFaxDevStatus = (PFAX_DEV_STATUS)( MemAllocMacro(dwSize));
pFaxDevStatus->SizeOfStruct = sizeof(FAX_DEV_STATUS);
pFaxDevStatus->StatusId = pJobInfo->Status;
pFaxDevStatus->StringId = 0;
pFaxDevStatus->PageCount = pJobInfo->PageCount;
upStringOffset = sizeof(FAX_DEV_STATUS);
pJobInfo->CSI = NULL;
if (pJobInfo->CSI != NULL) {
pFaxDevStatus->CSI = (LPWSTR) ((UINT_PTR) pFaxDevStatus + upStringOffset);
lstrcpy(pFaxDevStatus->CSI, pJobInfo->CSI);
upStringOffset += (lstrlen(pJobInfo->CSI) + 1) * sizeof(WCHAR);
}
pFaxDevStatus->CallerId = NULL;
if (pJobInfo->CallerId != NULL) {
pFaxDevStatus->CallerId = (LPWSTR) ((UINT_PTR) pFaxDevStatus + upStringOffset);
lstrcpy(pFaxDevStatus->CallerId, pJobInfo->CallerId);
upStringOffset += (lstrlen(pJobInfo->CallerId) + 1) * sizeof(WCHAR);
}
pFaxDevStatus->RoutingInfo = NULL;
if (pJobInfo->RoutingInfo != NULL) {
pFaxDevStatus->RoutingInfo = (LPWSTR) ((UINT_PTR) pFaxDevStatus + upStringOffset);
lstrcpy(pFaxDevStatus->RoutingInfo, pJobInfo->RoutingInfo);
upStringOffset += (lstrlen(pJobInfo->RoutingInfo) + 1) * sizeof(WCHAR);
}
pFaxDevStatus->ErrorCode = ErrorCode;
WriteDebugString(L"PostJobStatus2: StatusId:%8x,PageCount:%d,ErrorCode:%8x",pFaxDevStatus->StatusId,
pFaxDevStatus->PageCount,pFaxDevStatus->ErrorCode);
if (pFaxDevStatus->CSI)
WriteDebugString(L"CSI:%s",pFaxDevStatus->CSI);
if (pFaxDevStatus->CallerId)
WriteDebugString(L"CallerId:%s",pFaxDevStatus->CallerId);
if (pFaxDevStatus->RoutingInfo)
WriteDebugString(L"RoutingInfo:%s",pFaxDevStatus->RoutingInfo);
PostQueuedCompletionStatus(pJobInfo->CompletionPortHandle , sizeof(FAX_DEV_STATUS), pJobInfo->CompletionKey, (LPOVERLAPPED) pFaxDevStatus);
// LeaveCriticalSection(&pd->cs);
Sleep(100);
return TRUE;
}
unsigned short GetTiffPages(LPCTSTR lpszFileName)
{
BOOL bRet;
HANDLE hFile = INVALID_HANDLE_VALUE;
short IFDEntryItems = 4;
long IFDPos = 0;
unsigned short usPages = 0;
DWORD dwByteReaded;
hFile = CreateFile(lpszFileName,GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,
OPEN_EXISTING,0,NULL);
if (INVALID_HANDLE_VALUE == hFile)
return 0;
SetFilePointer(hFile,4,NULL,FILE_CURRENT);
if (NO_ERROR != GetLastError())
{
CloseHandle(hFile);
return 0;
}
while(TRUE)
{
bRet = ReadFile(hFile,&IFDPos,sizeof(long),&dwByteReaded,NULL);
if(bRet && dwByteReaded && IFDPos)
{
usPages ++;
SetFilePointer(hFile, IFDPos, NULL, FILE_BEGIN);
if (NO_ERROR == GetLastError())
{
bRet = ReadFile(hFile,&IFDEntryItems,sizeof(short),&dwByteReaded,NULL);
if (bRet && dwByteReaded && IFDEntryItems)
{
SetFilePointer(hFile,IFDEntryItems * 12 , NULL, FILE_CURRENT);
if (NO_ERROR == GetLastError())
continue;
else
break;
}
else
break;
}
}
else
break;
}
CloseHandle(hFile);
return usPages;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -